RESTful Web Service的一些新体会
REST - Representational State Transfer
其实这个representational是指Resource的representation
Resource其实就是实体,ReST中所有的对象都被视为Resource。每一个Resource都有一个URI(Unique Resource Identifier),通过访问URI就可以获取对应的resource
Representational指的是resource的呈现形式,可以是txt, json, html, xml, binary, jpg, png.....
State Transfer发生在client和server互动的过程中。因为HTTP是stateless,因此所有的state都保存在server,如果client想要操作server,就需要让server发生state transfer。这种transfer发生在表现层(representation),因此叫做REST。为了是想state transfer,client需要通过HTTP methods:POST, GET, PUT, DELETE 来分别进行CRUD(Create, Read, Update, Delete)操作。其中POST既可以用来新建资源,也可以用来更新资源
在面试中还被问到what makes Restful web service 其实感觉就是想问restful的一些条件和原则
1. Resource都对应着唯一的URI,或者说是resource-driven。URI构成了一个全局命名空间
2. 使用HTTP methods
3. Stateless无状态,对服务器的请求时无状态的,这使得服务器的变换对客户端是不可见的,因为在连续的请求中,客户端并不依赖于同一台服务器
4. 多种resource format,可以是txt, json, html, xml等等。
因为URI指示的是资源resource 因此在URI中不应该出现HTTP动词,只能有代表resource的名词
HTTP methods:
GET (Select)- 从服务器获取资源
POST (Create/Update) - 在服务器上新建一个资源 或更新一个资源
PUT (Update) - 在服务器更新client提供改变后的完整资源
DELETE (Delete) - 在服务器上删除资源
PATCH (Update) - 在服务器上更新client提供改变的属性
HEAD - 获取资源的head
OPTIONS - 获取信息,关于资源的哪些属性是client可以更改的
Status Codes
常见的有这些:
200 OK - [GET] 服务器成功返回用户请求的数据
201 CREATED - [POST/PUT/PATCH]用户创建或修改数据成功
204 NO CONTENT - [DELETE]用户删除数据成功
400 INVALID REQUEST - [POST/PUT/PATCH] 用户发出的请求有错误 服务器没有进行新建或修改的操作
404 NOT FOUND - [*]用户发出的请求是不存在的记录
500 INTERNAL SERVER ERROR - [*]服务器发生错误 用户无法判断发出的请求是否成功
在发生错误之后,服务器会向用户返回错误信息
所有的code:http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
其实因为REST用的是HTTP methods 也是基于HTTP protocol的 所以也可以用HTTP Servlet去实现REST 因为HTTPServlet中也定义了doGet, doPost, doPut, doDelete这些方法了 所以也完全可以重写这些方法去实现REST
在复习的过程中 我还参考了http://www.ruanyifeng.com/blog/2014/05/restful_api.html的博文 感觉写的蛮好~
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。