web编程 REST 与 RESTful API
来源:互联网 发布:阿里大数据应用蓝图 编辑:程序博客网 时间:2024/06/08 06:16
Representational State Transfer的缩写。 其中文翻译是"表现层状态转化"。
降低开发的复杂性,提高系统的可伸缩性
- 资源
- 表现层
- 状态转化
资源
REST的名称"表现层状态转化"中,省略了主语。"表现层"其实指的是"资源"(Resources)的"表现层"。所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的实在。你可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的识别符。
表现层(Representation)
URI只代表资源的实体,不代表它的形式。严格地说,有些网址最后的".html"后缀名是不必要的,因为这个后缀名表示格式,属于"表现层"范畴,而URI应该只代表"资源"的位置。它的具体表现形式,应该在HTTP请求的头信息中用Accept和Content-Type字段指定,这两个字段才是对"表现层"的描述。
状态转化(State Transfer)
互联网通信协议HTTP协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(State Transfer)。而这种转化是建立在表现层之上的,所以就是"表现层状态转化"。
就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。
几种误区
最常见的一种设计错误,就是URI包含动词--》 /posts/show/1,正确的写法应该是/posts/1,然后用GET方法表示show。
资源不能是动词,但是可以是一种服务
POST /accounts/1/transfer/500/to/2 --》
POST /transaction HTTP/1.1
from=1&to=2&amount=500.00
为什么在请求中传递SessionID被普遍认为是unRESTful的,而将用户的credentials包含在每个请求里又是一种非常RESTful的做法
无状态指的是任意一个Web请求必须完全与其他请求隔离,当请求端提出请求时,请求本身包含了相应端为相应这一请求所需的全部信息。
RESTful架构对于state的两个不同的解释: 应用状态(Application State)和资源状态(Resource State)。
- 应用状态:指的是与某一特定请求相关的状态信息
- 资源状态:则反映了某一存储在服务器端资源在某一时刻的特定状态,该状态不会因为用户请求而改变,任何用户在同一时刻对该资源的请求都会获得这一状态的表现(Representation)。
RESTful架构要求服务器端不保有任何与特定HTTP请求相关的资源,所以应用状态必须由请求方在请求过程中提供。
在Session ID可以被认为是一个用来标识某一会话状态的Key,将其传递给服务器端意味着这样一个请求:“请帮我取出这个状态信息”,也就是说这个请求假设响应方保有着状态信息。由于与某一特定请求相关的状态属于应用状态,而RESTful架构要求任何此类状态由请求方负责提供,所以传递Session ID被认为是unRESTful的做法。反过来,user credential作为一种应用状态,是被期望由请求方提供的,所以在请求中传递user credentials(姑且忽略安全性问题)是符合RESTful架构规范的。
------
简短总结:
RESTful的API编程规范中:
每个资源实体由特定的URL来表示,对该资源实体的操作应该放在request的HEADER里面(比如get,post,put,delete)。
切记不要在URL里放动词,动词应该放在Http协议里面。
参考:http://developer.51cto.com/art/200906/129424.htm
- web编程 REST 与 RESTful API
- restful Web 服务编程,REST 与 SOAP
- REST、RESTful 与 RESTful API
- REST、RESTful 与 RESTful API
- REST以及RESTful的实现:Web API
- REST,RESTFUL,SOAP,RPC,RESTFUL Web API区别
- REST与RESTFul API最佳实践
- REST与RESTFul API最佳实践
- REST与RESTFul API最佳实践
- REST与RESTFul API最佳实践
- REST与RESTFul API最佳实践
- Hadoop web编程--REST API
- REST与RESTFul API最佳实践(转载来自于慕课网)
- Hadoop web编程--REST API WebHDFS
- ASP.NET Web API与Rest web api(一)
- REST模式--RESTful web服务
- 【REST】REST、RESTFUL的理解以及SpringMVC实现Restful编程
- 【REST】REST、RESTFUL的理解以及SpringMVC实现Restful编程
- Mybatis中#{}和${}的区别
- 设计模式之建造者模式
- 初学opencv/直方图
- Jquery 扩展方法
- 并查集:POJ1182-食物链(并查集比较高端的应用)
- web编程 REST 与 RESTful API
- 电商项目实战——第一天(环境部署)1
- CSU 1970 LXX数
- hihoOffer收割练习20题目1
- 【后台】开发框架之Node.js
- 4年计算机博士读下来的一些感触
- MongoDB学习笔记之环境搭建篇
- 程序猿必须知道的一些有用的(外国)网站
- 最高人民法院特聘监督员汪国新旁听环保部原副部长张力军受审