<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Från skog till web &#187; rest</title>
	<atom:link href="http://txc.se/tag/rest/feed/" rel="self" type="application/rss+xml" />
	<link>http://txc.se</link>
	<description>Om att se livet från olika sidor</description>
	<lastBuildDate>Sat, 19 Jun 2010 21:49:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>PHP &amp; REST</title>
		<link>http://txc.se/2009/04/php-rest/</link>
		<comments>http://txc.se/2009/04/php-rest/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 17:45:43 +0000</pubDate>
		<dc:creator>TXC</dc:creator>
				<category><![CDATA[Webben]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[rest]]></category>

		<guid isPermaLink="false">http://www.txc.se/?p=16</guid>
		<description><![CDATA[Jag håller på med ett relativt stort projekt som inom en framtid kommer att lanseras rätt hårt här i Sverige. Mina medarbetare har nu efterfrågat möjligheten för tredjepart att utveckla mot denna plattform. Så jag har satt mig ned och undersökt denna möjlighet, eftersom Facebook, Twitter mfl använder REST, så varför inte. Med möjligheten för [...]]]></description>
			<content:encoded><![CDATA[<p>Jag håller på med ett relativt stort projekt som inom en framtid kommer att lanseras rätt hårt här i Sverige.</p>
<p>Mina medarbetare har nu efterfrågat möjligheten för tredjepart att utveckla mot denna plattform.</p>
<p>Så jag har satt mig ned och undersökt denna möjlighet, eftersom Facebook, Twitter mfl använder <abbr title="Representational State Transfer ">REST</abbr>, så varför inte.</p>
<p><span id="more-16"></span></p>
<p>Med möjligheten för REST så kan man även använda HTTP Svarskoder istället för att lägga ned tid på att göra ett eget, som säkerligen lär kräva en manual för att tolka.</p>
<p>Tex:</p>
<p>När man skapat ett inlägg, användare eller annat, svara enkelt med 201 (201 = Created), när något har gått fel så svarar man med 500 (500 = Internal Server Error), eller om dom brutit mot API:et ett 400 fel (400 = Bad Request). Man kan även skicka ett 501 fel om dom försöker skicka POST till något som bara kräver GET (501 = Not Implemented). Om MySQL servern är nere så ett 503 (503 = Service unavailable). Ja, du fattar mitt tänk här. Du kan läsa mer om status koderna på Wikipedia <a href="http://en.wikipedia.org/wiki/List_of_HTTP_status_codes">HTTP Status Koder</a>.</p>
<pre name="code" class="php">
class RestUtils
{
	public static function processRequest()
	{

	}

	public static function sendResponse($status = 200, $body = '', $content_type = 'text/html')
	{

	}

	public static function getStatusCodeMessage($status)
	{
		// these could be stored in a .ini file and loaded
		// via parse_ini_file()... however, this will suffice
		// for an example
		$codes = Array(
		    100 => 'Continue',
		    101 => 'Switching Protocols',
		    200 => 'OK',
		    201 => 'Created',
		    202 => 'Accepted',
		    203 => 'Non-Authoritative Information',
		    204 => 'No Content',
		    205 => 'Reset Content',
		    206 => 'Partial Content',
		    300 => 'Multiple Choices',
		    301 => 'Moved Permanently',
		    302 => 'Found',
		    303 => 'See Other',
		    304 => 'Not Modified',
		    305 => 'Use Proxy',
		    306 => '(Unused)',
		    307 => 'Temporary Redirect',
		    400 => 'Bad Request',
		    401 => 'Unauthorized',
		    402 => 'Payment Required',
		    403 => 'Forbidden',
		    404 => 'Not Found',
		    405 => 'Method Not Allowed',
		    406 => 'Not Acceptable',
		    407 => 'Proxy Authentication Required',
		    408 => 'Request Timeout',
		    409 => 'Conflict',
		    410 => 'Gone',
		    411 => 'Length Required',
		    412 => 'Precondition Failed',
		    413 => 'Request Entity Too Large',
		    414 => 'Request-URI Too Long',
		    415 => 'Unsupported Media Type',
		    416 => 'Requested Range Not Satisfiable',
		    417 => 'Expectation Failed',
		    500 => 'Internal Server Error',
		    501 => 'Not Implemented',
		    502 => 'Bad Gateway',
		    503 => 'Service Unavailable',
		    504 => 'Gateway Timeout',
		    505 => 'HTTP Version Not Supported'
		);

		return (isset($codes[$status])) ? $codes[$status] : '';
	}
}

class RestRequest
{
	private $request_vars;
	private $data;
	private $http_accept;
	private $method;

	public function __construct()
	{
		$this->request_vars		= array();
		$this->data				= '';
		$this->http_accept		= (strpos($_SERVER['HTTP_ACCEPT'], 'json')) ? 'json' : 'xml';
		$this->method			= 'get';
	}

	public function setData($data)
	{
		$this->data = $data;
	}

	public function setMethod($method)
	{
		$this->method = $method;
	}

	public function setRequestVars($request_vars)
	{
		$this->request_vars = $request_vars;
	}

	public function getData()
	{
		return $this->data;
	}

	public function getMethod()
	{
		return $this->method;
	}

	public function getHttpAccept()
	{
		return $this->http_accept;
	}

	public function getRequestVars()
	{
		return $this->request_vars;
	}
}
</pre>
<p>Det är inte mycket ännu, men mer kommer.</p>
]]></content:encoded>
			<wfw:commentRss>http://txc.se/2009/04/php-rest/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
