RESTFUL及Yii框架下开发RESTFUL的细节
来源:互联网 发布:双十一淘宝海报素材 编辑:程序博客网 时间:2024/05/05 22:22
问题:
1、RESTFUL是什么?为什么需要RESTFUL?
2、怎样做才算使用上RESTFUL
3、在Yii架构下,如何开发RESTFUL服务?
RESTFUL是什么?
[百度百科]:一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
解释得是有点官方,从场景来理解可能会更好理解。譬如,写PHP代码,通过模板把数据嵌入到HTML代码中进行展现,这对于传统的BS模式。随着设备类型变多,PC浏览器上的功能迁移到其他设备上时,又得根据设备的特性重做一套页面,甚至是一套接口,很自然就会觉得代码无法复用,这就需要一种更方便复用的方式来实现需求。
另外,除了设备这个场景的需要,还有一些服务提供商也在使用RESTFUL的设计风格来提供服务。最常见的是微信的服务接口,就是RESTFUL风格的接口。RESTFUL之外,还有一些服务机制是类似的,统称为Webservice,如:SOAP规范。
CS模式的软件架构,对网络的依赖较少,数据传递也很直接可以在单机内完成。而BS模式的软件架构,基于HTTP的无状态通讯来完成服务,这种软件架构的需求下,需要一种更好的框架来提供功能强、性能好、适宜通信的服务,RESTFUL就是在这样的背景下被提出来的。
怎样做才算使用上RESTFUL
有两篇文章需要读一读,写得比较好,最少比我自己的水平好很多:
http://www.ruanyifeng.com/blog/2011/09/restful.html
http://www.ruanyifeng.com/blog/2014/05/restful_api.html
一些关键点:
1、URI不应该存在动词,如果存在则证明RESTFUL中对资源进行操纵的方法。一般来说,数据库中的表都是同种资源的”集合”(collection),所以API中的名词也应该使用复数。
2、REST是Representational State Transfer的缩写,中文可以理解为“资源的表现层状态转化”。
3、对于版本控制,可以在HTTP请求头信息的Accept字段中进行区分。
4、如果条件允许,尽量使用HTTPS协议。
5、http的方法:GET 、 POST 、 PUT 、 DELETE
6、状态码:
200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务)204 NO CONTENT - [DELETE]:用户删除数据成功。400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。
7、返回结果
GET /collection:返回资源对象的列表(数组)GET /collection/resource:返回单个资源对象POST /collection:返回新生成的资源对象PUT /collection/resource:返回完整的资源对象DELETE /collection/resource:返回一个空文档
8、API的身份认证应该使用OAuth 2.0框架(http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html)。
9、帮助文档,可以考虑设置主域名缺省所有参数的情况下返回API文档供使用者阅读。
在Yii框架下实现RESTFUL
- 基本实例的配置过程
这个文章描述得很详细:http://www.yiichina.com/doc/guide/2.0/rest-quick-start 基本实例的代码讲解,流程图和核心代码
其他功能点的配置和流程图和核心代码
- RESTFUL及Yii框架下开发RESTFUL的细节
- 在NetBeans6下开发RESTful的应用
- ssm框架下开发RESTful json简单实例
- 已有mvc框架下基于jersey的restful接口开发
- restful框架
- RESTFUL 框架
- RESTful框架
- Yii RESTful Quick Start
- REST框架及RESTful接口设计的学习
- Java下RESTful WebService的实现框架介绍
- Java下RESTful WebService的实现框架介绍
- 框架中的RESTful api快速领悟(下):token的设置
- restful RESTful的理解
- PhpBoot: 一款用于快速开发 RESTful 接口的PHP框架
- RESTful API设计细节
- REST及RESTful的实现
- Yii2的RESTful API开发
- 开发restful风格的webservice
- 用户输入非法内容时的震动与动画提示——EditTextShakeHelper工具类介绍
- Json数据格式介绍、使用Android自带类库完成Json生成与解析
- 超好用的json解析工具——Gson项目使用详解
- 编程领域的11大发展趋势_软件工程
- 比Gson解析速度快10倍!——Json解析神器Jackson使用介绍
- RESTFUL及Yii框架下开发RESTFUL的细节
- LeetCode 169:Majority Element
- SQLite Tutorial 4 : How to export SQLite file into CSV or Excel file
- <Activity>标签下常见属性介绍
- 如何获取媒体库中所有音频文件信息,并在文件增删后及时更新媒体库
- nineoldandroids的使用
- Styling the Action Bar
- P03 (*) 获取列表的第K个元素
- Overlaying the Action Bar