PHP实现RESTful风格的API实例
Posted 成九云笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP实现RESTful风格的API实例相关的知识,希望对你有一定的参考价值。
Response.php :包含一个Request类,即输出类。根据接收到的Content-Type,将Request类返回的数组拼接成对应的格式,加上header后输出
<?php /** * 输出类 */ class Response { const HTTP_VERSION = "HTTP/1.1"; //返回结果 public static function sendResponse($data) { //获取数据 if ($data) { $code = 200; $message = \'OK\'; } else { $code = 404; $data = array(\'error\' => \'Not Found\'); $message = \'Not Found\'; } //输出结果 header(self::HTTP_VERSION . " " . $code . " " . $message); $content_type = isset($_SERVER[\'CONTENT_TYPE\']) ? $_SERVER[\'CONTENT_TYPE\'] : $_SERVER[\'HTTP_ACCEPT\']; if (strpos($content_type, \'application/json\') !== false) { header("Content-Type: application/json"); echo self::encodeJson($data); } else if (strpos($content_type, \'application/xml\') !== false) { header("Content-Type: application/xml"); echo self::encodeXml($data); } else { header("Content-Type: text/html"); echo self::encodeHtml($data); } } //json格式 private static function encodeJson($responseData) { return json_encode($responseData); } //xml格式 private static function encodeXml($responseData) { $xml = new SimpleXMLElement(\'<?xml version="1.0"?><rest></rest>\'); foreach ($responseData as $key => $value) { if (is_array($value)) { foreach ($value as $k => $v) { $xml->addChild($k, $v); } } else { $xml->addChild($key, $value); } } return $xml->asXML(); } //html格式 private static function encodeHtml($responseData) { $html = "<table border=\'1\'>"; foreach ($responseData as $key => $value) { $html .= "<tr>"; if (is_array($value)) { foreach ($value as $k => $v) { $html .= "<td>" . $k . "</td><td>" . $v . "</td>"; } } else { $html .= "<td>" . $key . "</td><td>" . $value . "</td>"; } $html .= "</tr>"; } $html .= "</table>"; return $html; } }
index.php :入口文件,调用Request类取得数据后交给Response处理,最后返回结果
<?php //数据操作类 require(\'Request.php\'); //输出类 require(\'Response.php\'); //获取数据 $data = Request::getRequest(); //输出结果 Response::sendResponse($data);
以上是关于PHP实现RESTful风格的API实例的主要内容,如果未能解决你的问题,请参考以下文章