yii2 restful web服务[格式响应]
响应格式
当处理一个 RESTful API 请求时, 一个应用程序通常需要如下步骤 来处理响应格式:
- 确定可能影响响应格式的各种因素, 例如媒介类型, 语言, 版本, 等等。 这个过程也被称为 content negotiation。
- 资源对象转换为数组, 如在 Resources 部分中所描述的。 通过 [[yii\rest\Serializer]] 来完成。
- 通过内容协商步骤将数组转换成字符串。 [yii\web\ResponseFormatterInterface|response formatters]] 通过 [yii\web\Response::formatters|response]] 应用程序组件来注册完成。
内容协商
Accept: application/json; q=1.0, */*; q=0.1
$ curl -i -H "Accept: application/json; q=1.0, */*; q=0.1" "http://localhost/users"HTTP/1.1 200 OK
Date: Sun, 02 Mar 2014 05:31:43 GMT
Server: Apache/2.2.26 (Unix) DAV/2 PHP/5.4.20 mod_ssl/2.2.26 OpenSSL/0.9.8y
X-Powered-By: PHP/5.4.20
X-Pagination-Total-Count: 1000
X-Pagination-Page-Count: 50
X-Pagination-Current-Page: 1
X-Pagination-Per-Page: 20
Link: <http://localhost/users?page=1>; rel=self,<http://localhost/users?page=2>; rel=next,<http://localhost/users?page=50>; rel=last
Transfer-Encoding: chunked
Content-Type: application/json; charset=UTF-8[{"id": 1,...},{"id": 2,...},...
]
use yii\web\Response;public function behaviors() { $behaviors = parent::behaviors(); $behaviors['contentNegotiator']['formats']['text/html'] = Response::FORMAT_HTML; return $behaviors; }
formats
属性的keys支持 MIME 类型,而 values 必须在 [[yii\web\Response::formatters]] 中支持被响应格式名称。
数据序列化
use yii\rest\ActiveController;class UserController extends ActiveController { public $modelClass = 'app\models\User'; public $serializer = [ 'class' => 'yii\rest\Serializer', 'collectionEnvelope' => 'items', ]; }
那么你的请求可能会得到的响应如下 http://localhost/users
:
HTTP/1.1 200 OK
Date: Sun, 02 Mar 2014 05:31:43 GMT
Server: Apache/2.2.26 (Unix) DAV/2 PHP/5.4.20 mod_ssl/2.2.26 OpenSSL/0.9.8y
X-Powered-By: PHP/5.4.20
X-Pagination-Total-Count: 1000
X-Pagination-Page-Count: 50
X-Pagination-Current-Page: 1
X-Pagination-Per-Page: 20
Link: <http://localhost/users?page=1>; rel=self,<http://localhost/users?page=2>; rel=next,<http://localhost/users?page=50>; rel=last
Transfer-Encoding: chunked
Content-Type: application/json; charset=UTF-8{"items": [{"id": 1,...},{"id": 2,...},...],"_links": {"self": "http://localhost/users?page=1","next": "http://localhost/users?page=2","last": "http://localhost/users?page=50"},"_meta": {"totalCount": 1000,"pageCount": 50,"currentPage": 1,"perPage": 20}
}
yii2 restful web服务[格式响应]相关推荐
- restful api_将Spring MVC RESTful Web服务迁移到Spring 4
restful api 1引言 Spring 4为MVC应用程序带来了一些改进. 在这篇文章中,我将重点介绍宁静的Web服务,并通过采用Spring 3.2实现的项目并将其升级到Spring 4来尝试 ...
- 构建 RESTful Web 服务
from: https://www.ibm.com/developerworks/cn/education/java/j-rest/j-rest.html 开始之前 关于本教程 REST 是一种思维方 ...
- RESTful Web 服务 - 安全性
因为 RESTful Web 服务使用 HTTP URLs 路径,因此以保护网站同样的方式维护 RESTful Web 服务是非常重要的.以下是设计 RESTful Web 服务时要遵循的最佳实践. ...
- RESTful Web 服务 - 消息
RESTful Web 服务使用 HTTP 协议作为客户端和服务器之间的通信媒介.客户端发送一个 HTTP 请求形式的消息,然后服务器按照 HTTP 响应形式的响应.这种技术被称为消息传递.这些消息包 ...
- 使用Spring开发Java RESTful Web服务的7个理由
REST现在已成为开发Web服务的标准方法,涉及Java时,可以使用许多框架和库,例如JAX-RS,Restlet,Jersey,RESTEasy,Apache CFX等,但是我鼓励Java开发人员使 ...
- restful web_泽西岛的RESTful Web服务
restful web 我已经讨论了有关体系结构考虑事项<< link >>的早期文章,以成为可在我的系统/机器上使用的分布式环境上的RESTful系统. 本文我们将讨论如何基 ...
- resteasy_Tomcat 7上具有RESTeasy JAX-RS的RESTful Web服务– Eclipse和Maven项目
resteasy 开发Web服务的RESTful方法不断受到越来越多的关注,并且似乎正在将SOAP淘汰. 我不会讨论哪种方法更好,但是我相信我们都同意REST更轻量级. 在本教程中,我将向您展示如何使 ...
- 将Spring MVC RESTful Web服务迁移到Spring 4
1引言 Spring 4为MVC应用程序带来了一些改进 . 在这篇文章中,我将重点介绍宁静的Web服务,并通过采用Spring 3.2实现的项目并将其升级到Spring 4来尝试这些改进.以下几点总结 ...
- 泽西岛的RESTful Web服务
我已经讨论了有关体系结构注意事项<< link >>的早期文章,以成为可在我的系统/机器上使用的分布式环境上的RESTful系统. 本文我们将讨论如何基于REST体系结构考虑来 ...
- Tomcat 7上具有RESTeasy JAX-RS的RESTful Web服务-Eclipse和Maven项目
开发Web服务的RESTful方法不断受到越来越多的关注,并且似乎正在将SOAP淘汰. 我不会讨论哪种方法更好,但是我相信我们都同意REST更轻量级. 在本教程中,我将向您展示如何使用RESTeasy ...
最新文章
- react native 报错:cannot read property 'length' of undefined
- 中缀表达式转换成后缀表达式
- 最优控制理论 一、变分法和泛函极值问题
- mysql 迁移表时忽略索引_Mysql迁移新环境索引损坏
- 微型计算机作为载体的部件是,大工11秋《计算机应用基础》辅导资料二
- linux网卡不响应arp,Linux中的网络配置和故障排除命令,学会不会吃亏
- 男人如何在不经常锻炼的情况下,慢慢消除大肚皮,恢复好身材?
- 四十二、在线预览pdf文件
- Java学习的正确打开方式
- 在pcb放置坐标标注_PCB拼板上的那颗美人痣
- mysql主主同步机制+keepalived实现MySQL高可用
- hsqldb mysql_HSQLDB简介
- 【开发环境简称】PRD生产环境-常见环境英文缩写简称
- matlab 警告:警告: 更新 Legend 时出错。Not enough input arguments.
- CTA-敏感行为-修改联系人(新建/更新/删除)
- win10开始菜单 此计算机,详细教您win10开始菜单打不开怎么办
- python压缩教程_如何使用Python压缩/解压缩zip文件?(代码示例)
- win10系统下安装打印机驱动
- oracle10漏洞补丁下载,Oracle漏洞修复工具
- 对于iPhone5分辨率兼容性调整问题 .