RESTful Web Service的一些新體會

REST - Representational State Transferhtml

其實這個representational是指Resource的representationweb

    Resource其實就是實體,ReST中全部的對象都被視爲Resource。每個Resource都有一個URI(Unique Resource Identifier),經過訪問URI就能夠獲取對應的resource
面試

    Representational指的是resource的呈現形式,能夠是txt, json, html, xml, binary, jpg, png..... json

    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既能夠用來新建資源,也能夠用來更新資源
api


在面試中還被問到what makes Restful web service 其實感受就是想問restful的一些條件和原則服務器

        1. Resource都對應着惟一的URI,或者說是resource-driven。URI構成了一個全局命名空間
restful

        2. 使用HTTP methodsless

        3. Stateless無狀態,對服務器的請求時無狀態的,這使得服務器的變換對客戶端是不可見的,由於在連續的請求中,客戶端並不依賴於同一臺服務器
rest

        4. 多種resource format,能夠是txt, json, html, xml等等。
code


由於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的博文 感受寫的蠻好~

相關文章
相關標籤/搜索