RESTful架构风格
RESTful
概念
RESTful(Representational State Transfer),即表现层状态转化。它是一种Web应用程序的设计风格和开发方式,其基于HTTP。适用于现代互联网厂商作为业务接口的场景,动作类型为新增、变更、删除所调用资源。
说人话:URL定位资源,使用HTTP动词(GET、POST、DELETE、PUT)描索操作。
如果一个架构符合REST原则,就称它为RESTful架构。
如何使用
- GET:获取资源;
- POST:新建资源;
- PUT:更新资源;
- DELETE:删除资源;
**注意:RESTful风格种URI不能包含动词。**因为“资源”表示一种实体,所以应该时名词,URI不应该有动词,动词应该放在HTTP协议中。
举例来说,某个URI是/posts/show/1,其中show是动词,这个URI就设计错了,正确的写法应该是/posts/1,然后用GET方法表示show。
如果某些动作是HTTP动词表示不了的,你就应该把动作做成一种资源。比如网上汇款,从账户1向账户2汇款500元,错误的URI是:
POST /accounts/1/transfer/500/to/2
正确的写法是把动词transfer改成名词transaction,资源不能是动词,但是可以是一种服务:
POST /transaction HTTP/1.1
Host: 127.0.0.1
from=1&to=2&amount=500.00
另一个设计误区,就是在URI中加入版本号:
http://www.example.com/app/1.0/foo
http://www.example.com/app/1.1/foo
http://www.example.com/app/2.0/foo
因为不同的版本,可以理解成同一种资源的不同表现形式,所以应该采用同一个URI。版本号可以在HTTP请求头信息的Accept字段中进行区分(参见Versioning REST Services):
Accept: vnd.example-com.foo json; version=1.0
Accept: vnd.example-com.foo json; version=1.1
Accept: vnd.example-com.foo json; version=2.0
为什么要使用RESTful风格?
RESTful风格结构清晰、符合标准、易于理解、拓展方便等。
“古代”网页时前端后端融在一起的,比如之前的PHP、JSP等。在之前的桌面时代问题大,但是近年来移动互联网的发展,各种类型的Client层出不穷,RESTful可以通过一套统一的接口为Web、iOS和Android提供服务。另外对于广大平台来说,比如微博开放平台、微信公众平台等,它们不需要显式的前端,只需要一套提供服务的接口,于是RESTful更是它们最好的选择。如图所示:
缺点
- RESTful不是一种规范,而是一种风格,它不具有强制性;
- 抽象资源。所谓的抽象资源是“不直接对应数据库表的资源”。比如“登录/登出”。如果你用RPC式的接口设计,这就很直接:POST /login 和 POST /logout。但是你要硬套RESTful,你就得挖空心思的想出一个抽象资源“会话”(session)。登录 = 创建会话,登出 = 销毁会话。于是你把接口设计成 POST /sessions 和 DELETE /sessions。这就很反直觉,且背离RESTful的设计初衷。
- 参数农户分散到路径、query、body三个地方,设计复杂,用户使用起来不方便,不如全放body;
RPC的API
另一种选择是:设计API也可以使用RPC式的API,且一律POST /命名空间/资源类型/动作。参数全都带在body里。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgbheha
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01