RESTful風格WebService簡介

RESTful是一種設計風格不是標準,關注核心是要處理的資源,通過RUL觸發執行。是一種比RPC(遠程調用)更輕量級、更安全的服務端和客戶端交互方式,基於這個風格設計的軟件可以更簡潔,更有層次,更易於實現緩存等機制。可有多種實現方式,如java中spring

一、冪等性和安全:

1.冪等性

數學概念: f(f(x)) = f(x)x被函數f作用一次和無限次結果一樣,即冪等,反之非冪等。

軟件系統:某個函數或接口使用相同的參數調用一次或無限次,造成影響相同,不會產生災難性後果

2.HTTP的冪等性(常用)

  GET方法,用於獲取資源,不管調用多少次接口,不會導致服務器狀態改變(日誌和訪問計數器外),冪等。

  PUT它直接把實體部分的數據替換到服務器的資源,我們多次調用它,只會產生一次影響冪等

  DELETE 調用一次和多次對資源產生影響是相同的,冪等

POST每次調用都會產生新的資源,非冪等

調用HTTP冪等方法(GET/PUT/DELETE)是安全的,打個比方,GET方法內的邏輯,不能對資源進行非冪等操作(i++)。冪等約束對於服務安全性很重要

 

二、RPCRESTful

1.RPC (遠程調用)樣式的 Web 服務的客戶端將一個裝滿數據的信封(包括方法和參數信息)通過 HTTP 發送到服務器。服務器打開信封並使用傳入參數執行指定的方法。方法的結果打包到一個信封並作爲響應發回客戶端。客戶端收到響應並打開信封。它忽略 HTTP 的大部分特性且僅支持 POST 方法,HTTP只是一個傳輸層的協議,SOAP是應用層協議。

2.RESTful規範中,接口的設計核心是面向資源的,每一個資源都有一個唯一確定的地址,資源是通過唯一地址url進行暴露,資源本身是方法調用的目標,方法列表對所有資源都是一樣的,這些方法都是HTTP標準方法,常用的有:GETPOSTPUTDELETE

HTTP協議成應用層協議,在性能效率優於RPC

RESTful通過HTTPURL來觸發,不使用soapxml命名空間

Eg:(針對book資源的操作)

String getUrl="http://localhost:8080/webservice/book/19";(HTTP GET方法查id=19)

String deleteUrl="http://localhost:8080/webservicebook?bookId=5";(HTTP  DELETE方法 刪除 bookId=5)

String postUrl="http://localhost:8080/webservice/book"(HTTP POST 增加book,參數HTTTP請求體)

String putUrl="http://localhost:8080/webservice/book"(HTTP PUT修改book,參數HTTTP請求體)

重要的約束:

可尋址性:暴露資源都有一個唯一確定的URL

URL:具有可讀性,原則上不適用動詞

統一接口:對任何資源的操作通過HTTP GET(讀) POST(增) PUT(改) DELETE(刪)

安全性:HTTP GET/PUT/DELETE操作必須符合冪等性約束。非冪等方法POST前後端代碼設計控制其安全。對於可讀可寫的服務,通過Token認證

無狀態性:HTTP的無狀態性,分佈式系統中,每一次請求獨立,負載均衡分發請求

三、RESTful設計一般步驟:

 

 

  參考:RESTful Web Service(中文版)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章