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实例(二)的更多相关文章
- PHP实现RESTful风格的API实例(三)
接前一篇PHP实现RESTful风格的API实例(二) .htaccess :重写URL,使URL以 /restful/class/1 形式访问文件 Options +FollowSymlinks R ...
- PHP实现RESTful风格的API实例(一)
最近看了一些关于RESTful的资料,自己动手也写了一个RESTful实例,以下是源码 目录详情: restful/ Request.php 数据操作类 Response.php 输出类 index. ...
- Gin实战:Gin+Mysql简单的Restful风格的API(二)
上一篇介绍了Gin+Mysql简单的Restful风格的API,但代码放在一个文件中,还不属于restful风格,接下来将进行进一步的封装. 目录结构 ☁ gin_restful2 tree . ├─ ...
- PHP实现RESTful风格的API实例
原生方式实现,直接撸代码 Request.php :包含一个Request类,即数据操作类.接收到URL的数据后,根据请求URL的方式(GET|POST|PUT|PATCH|DELETE)对数据进行相 ...
- restful风格的API
在说restful风格的API之前,我们要先了解什么是rest.什么是restful.最后才是restful风格的API! PS(REST:是一组架构约束条件和原则,REST是Roy Thomes F ...
- 测开大佬告诉你:如何5分钟快速创建restful风格的API接口-使用django restframework框架
一.思考❓❔ 1.创建API接口难吗? 软件测试工程师: 只测过API接口, 从没创建过 应该需要掌握一门后端开发语言和后端开发框架吧!? 脑容量有限,想想就可怕 2.如何创建API接口呢? 使用Dj ...
- PHP实现Restful风格的API
Restful是一种设计风格而不是标准,比如一个接口原本是这样的: http://www1.qixoo.com/user/view/id/1表示获取id为1的用户信息,如果使用Restful风格,可以 ...
- [01] 浅谈RESTful风格的API
1.什么是RESTful风格的API REST,即Representational State Transfer,可以理解为"(资源的)表现层状态转化". 在网络上,我们通过浏览器 ...
- Gin实战:Gin+Mysql简单的Restful风格的API
我们已经了解了Golang的Gin框架.对于Webservice服务,restful风格几乎一统天下.Gin也天然的支持restful.下面就使用gin写一个简单的服务,麻雀虽小,五脏俱全.我们先以一 ...
随机推荐
- shell脚本编译安装LAMP环境
#filename lamp.sh#version Centos6.7;apache2.4.23;mariadb-5.5.40;php5.5.38#data 2016/09/28#mail 23853 ...
- Task set generation
Task set generation for uni- and multiprocessors: “Unifying Fixed- and Dynamic-Priority Scheduling b ...
- AOP实现原理
Spring 为解耦而生,其中AOP(面向切面编程)是很浓重的一笔. 本文来探讨一下AOP实现的原理. 一. 概述 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负 ...
- Python 性能优化——对象绑定
不同函数调用方式对应不同的绑定次数: import profile class A: def f(self): pass def foo(): a = A() for i in range(10000 ...
- angular.element的常用方法
addClass()-为每个匹配的元素添加指定的样式类名after()-在匹配元素集合中的每个元素后面插入参数所指定的内容,作为其兄弟节点append()-在每个匹配元素里面的末尾处插入参数内容att ...
- 杨光福IT讲师微博
杨光福IT讲师微博: http://weibo.com/321chinavideo 微博现在里面有很多干货,以后会越来越多,主要用于分享和交流技术.关注一下对你有帮助.
- Object-C中一些不同于C系列语言表现的特性
这段时间体验和学习OC,虽然这么多年基本都在使用C系列语言(C,C++,C#),但是仍然有很多的不习惯. 当然,这些不习惯不代表讨厌或者不好,也许这些就是OC作为Apple开发首选语言而显得特殊的一些 ...
- 远程连接oracle服务器
用户名 / 密码@172.16.16.203:1521/orcl
- 由XML解析学习工厂模式
代码段1: startupData = new StartupData(); /* 设定自定义的MyHandler给XMLReader */ StartupXMLHandler startupData ...
- css小技巧
每逢大的灾难的时候,很多网站变成了灰色,如何让网站快速变灰?css代码是很简单的,用的是css的filter功能. html { filter: grayscale(100%);//IE浏览器 -we ...