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的博文 感觉写的蛮好~


RESTful Web Service的一些新体会,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。