RESTful 规范
1. 基本概念
REST
全称是Representational State Transfer
,中文意思是表征性状态转移。指的是一组架构约束条件和原则。如果一个架构符合REST
的约束条件和原则,我们就称它为RESTful
架构。如果后台开发遵守了REST
风格便可称为RESTful
。
REST
本身并没有创造新的技术,是一种软件架构风格,以更好地使用现有Web
标准中的一些准则和约束。结构清晰、符合标准、易于理解、扩展方便。
RESTful
架构是对MVC
架构改进后所形成的一种架构,通过使用事先定义好的接口与不同的服务联系起来。在RESTful
架构中,浏览器使用POST
,DELETE
,PUT
和GET
四种请求方式分别对指定的URL
资源进行增删改查操作。因此,RESTful
是通过URI
实现对资源的管理及访问,具有扩展性强、结构清晰的特点。
RESTful
架构的特点:
- 每一个
URI
代表一种资源; - 客户端使用
GET
(查询)、POST
(增加)、PUT
(更新)、DELETE
(删除)四个表示操作方式的动词对服务端资源进行操作; - 通过操作资源的表现形式来操作资源;
2. 规范要求
2.1 URI不能包含动词,只能有名词
名词往往与数据库的表名对应。比如:
GET /products :将返回所有产品清单
POST /products :将产品新建到集合
GET /products/4 :将获取产品 4
PUT /products/4 :将更新产品 4
下面写法是错误的写法,比如:/posts/show/1
。这里的show
是动词,这里就设计错了。正确写法为/posts/1
,然后用GET
方法表示show
。
2.2 版本号
应该将API
的版本号放入URL
。
比如:
1.0: http://www.example.com/app/1.0/foo
1.1: http://www.example.com/app/1.1/foo
2.0: http://www.example.com/app/2.0/foo
另一种做法就是将版本号放置在HTTP
请求头部的Accept
或者Content-Type
字段中进行区分,比如:
1.0: vnd.example-com.foo json; version=1.0
1.1: vnd.example-com.foo json; version=1.1
2.0: vnd.example-com.foo json; version=2.0
也可以使用时间戳来替代,比如:
June 2008: http://www.example.com/app/2008/06/foo
October 2009: http://www.example.com/app/2009/10/foo
February 2010: http://www.example.com/app/2010/02/foo
2.3 返回数据格式
返回资源默认为JSON
,当然也可以是XML
格式的文件,所以需要指定:
XML: http://www.example.com/app/1.0/foo?format=xml
JSON: http://www.example.com/app/1.0/foo?format=json
应该尽量使用JSON
,避免使用XML
。
2.4 状态码必须精确
客户端每一次请求,服务端都必须给出回应,回应包括HTTP
状态码和数据两部分。
3. 前后差别对别
在Restful API接口规范一文中提到,使用前和使用后的案例:
非REST
设计:
http://localhost:8080/admin/getUser (查询用户)
http://localhost:8080/admin/addUser (新增用户)
http://localhost:8080/admin/updateUser (更新用户)
http://localhost:8080/admin/deleteUser (删除用户)
不同的URL
(主要为使用动词)进行不同的操作。
REST
架构:
GET http://localhost:8080/admin/user (查询用户)
POST http://localhost:8080/admin/user (新增用户)
PUT http://localhost:8080/admin/user (更新用户)
DELETE http://localhost:8080/admin/user (删除用户)
URL
只指定资源,以HTTP
方法动词进行不同的操作。
给人的感觉更加清爽。以后开发需要注意,慢慢向RESTful
规范靠拢。
Thanks
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhhacgih
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13