rest风格的get加密字符串怎么接收_RESTful Api的设计与风格,你该学一下咯
REST的重要概念
REST全稱是Representational State Transfer,中文意思是表征性狀態轉移。RESTful是指具有REST表征的web架構風格,并非必須遵守的規則。
REST分離了API的結構和邏輯,主要應用于客戶端和服務器交互類的軟件。基于這種風格設計的軟件更加簡潔,更有層次,更易于實現緩存等機制。當REST架構的約束條件作為一個整體應用時,將生成一個可以擴展到大量客戶端的應用程序。它還降低了客戶端和服務器之間的交互延遲。統一界面簡化了整個系統架構,改進了子系統之間交互的可見性。REST簡化了客戶端和服務器的實現,而且對于使用REST開發的應用程序更加容易擴展。
Web 應用程序最重要的 REST 原則是,客戶端和服務器之間的交互在請求之間是無狀態的。從客戶端到服務器的每個請求都必須包含理解請求所必需的信息。如果服務器在請求之間的任何時間點重啟,客戶端不會得到通知。此外,無狀態請求可以由任何可用服務器回答。
另一個重要的 REST 原則是分層系統,分層系統指組件無法了解它與之交互的中間層以外的組件。分層系統限制整個系統的復雜性,保證底層的獨立性。
這里大家可以關注一下我的個人專欄《PHP進階集中營》,每天會給大家即時分享一個最新的php技術資訊,有優秀的PHP技術內容,也歡迎分享在我的專欄。
PHP進階集中營?zhuanlan.zhihu.comRESTful風格的7種具體特征:
1. 采用URI標識資源
RESTful Web API采用面向資源的架構,所以首先需要考慮的是有哪些資源可供操作。一個資源必須具有一個或者多個標識,在restful中使用URI作為資源的標識。作為資源標識的URI最好具有“可讀性”,這用更容易被使用。除此之外,標識資源的URI還應該具有“可尋址性(Addressability)”。也就是說,URI不僅僅指明了被標識資源所在的位置,而且通過這個URI可以直接獲取目標資源。(URI具有URL和URN兩種主要的表現形式,只有URL具有可尋址性,所以我們最好采用一個URL作為資源的標識。)
2. 使用“鏈接”關聯相關的資源
REST是使用標準的HTTP方法來操作資源的,但僅僅因此就理解成帶CURD的Web數據庫架構就太過于簡單了。這種反模式忽略了一個核心概念:"超媒體即應用狀態引擎(hypermedia as the engine of application state)"。 超媒體是什么?當你瀏覽Web網頁時,從一個連接跳到一個頁面,再從另一個連接跳到另外一個頁面,就是利用了超媒體的概念:把一個個把資源鏈接起來。要達到這個目的,就要求在表述格式里邊加入鏈接來引導客戶端。如使用<a>的href屬性關聯資源、用url來鏈接項目所有者和項目地址。
3. 使用統一的接口
統一接口包含了一組受限的預定義的操作,不論什么樣的資源,都是通過使用相同的接口進行資源的訪問。接口應該使用標準的HTTP方法如GET,PUT和POST,并遵循這些方法的語義。
4. 使用標準的HTTP方法
7個常用的HTTP方法:GET/POST/PUT/DELETE/PATCH/HEAD/OPTIONS。首先GET、HEAD和OPTIONS這三個HTTP方法旨在發請求以獲取所需的信息。其他四種(POST、PUT、PATCH和DELETE),旨在針對目標資源作添加、修改和刪除操作。具體如下:
GET:從服務器取出資源(一項或多項)。
POST:在服務器新建一個資源。
PUT:在服務器更新資源(客戶端提供改變后的完整資源)。
PATCH:在服務器更新資源(客戶端提供改變的屬性)。
DELETE:從服務器刪除資源。
HEAD:獲取資源的元數據。
OPTIONS:獲取信息,關于資源的哪些屬性是客戶端可以改變的。[旨在發送一種“探測”請求以確定針對某個目標地址的請求須具有怎樣的約束,然后根據其約束發送真正的請求。(“跨域資源”的預檢 )]
5. 安全性與冪等性
GET、HEAD和OPTIONS均被認為是安全的方法,因為它們旨在實現對數據的獲取,其它4個HTTP方法,由于它們會導致服務端資源的變化,所以被認為是不安全的方法。
冪等性在這里是指服務器狀態的變化。如果一個方法重復執行多次,產生的效果是一樣的,就說該資源是冪等方法 (在網速不夠快的情況下,客戶端發送一個請求后不能立即得到響應,由于不能確定請求是否被成功提交,所以它有可能會再次發送另一個相同的請求,冪等性決定了第二個請求是否有效。)七種HTTP方法中只有POST是一個非冪等的方法。由于DELETE和PATCH請求操作的是現有的某個資源,所以它們是冪等方法。對于PUT請求,只有在對應資源不存在的情況下服務器才會進行添加操作,否則只作修改操作,所以它也是冪等方法。 因為POST是進行添加操作,如果服務器接收到兩次相同的POST操作,將導致兩個相同的資源被創建,所以POST是一個非冪等方法。
6. 支持多種資源表示方式
資源和資源表示是兩個不同的概念,資源表示是資源的表現形式。對于Web來說,目前具有兩種主流的數據結構,XML和JSON,它們也是資源的兩種主要的呈現方式。在設計Web API的時候,應該支持不同的資源表示。對于請求提交的資源,我們一般利用請求的Content-Type報頭攜帶的媒體類型來判斷其采用的表示類型。對于響應資源表示類型的識別有兩種方式,一種是在URI中包含資源標識類型,另一種是采用“內容協商”,根據請求相關報頭來判斷它所希望的資源表示類型。(比如“Accept”和“Accept-language”報頭可以體現請求可以接受的響應媒體類型和語言。)兩者的差別是,前者具備瀏覽器兼容性,后者更智能。
7. 無狀態性
RESTful只要維護資源的狀態,而不需要維護客戶端的狀態。對于它來說,每次請求都是全新的,它只需要針對本次請求作相應的操作,不需要將本次請求的相關信息記錄下來以便用于后續來自相同客戶端請求的處理。
RESTful設計誤區:
1. URI中包含動詞。因為"資源"表示一種實體,所以應該是名詞,URI不應該有動詞,動詞應該放在HTTP協議中。
2. URI中含有版本號。因為不同的版本,可以理解成同一種資源的不同表現形式,所以應該采用同一個URI。版本號可以在HTTP請求頭信息的Accept字段中進行區分
RESTful架構與其他架構的區別
SOAP WebService
WebService是一種跨編程語言和跨操作系統平臺的遠程調用技術。
WebService通過HTTP協議發送請求和接受結果時采用XML格式封裝,并增加了一些特定的HTTP消息頭,這些特定的HTTP消息頭和XML內容格式就是SOAP協議。
效率和易用性
SOAP由于各種需求不斷擴充其本身協議的內容,導致在SOAP處理方面的性能有所下降。同時在易用性方面以及學習成本上也有所增加。
RESTful由于其面向資源接口設計以及操作抽象簡化了開發者的不良設計,同時也最大限度的利用了HTTP最初的應用協議設計理念。
安全性
RESTful對于資源型服務接口來說很合適,同時特別合適對于效率很高,但是對于安全要求不高的場景。
SOAP的成熟性可以給需要提供給多開發語言的,對于安全性要求比較高的接口設計帶來便利。
PHP進階學習筆記、面試;文檔、視頻資源免費獲取?shimo.im總結
以上是生活随笔為你收集整理的rest风格的get加密字符串怎么接收_RESTful Api的设计与风格,你该学一下咯的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中南大学12月13日考c语言,中南大学2
- 下一篇: oracle静默文件建库,【配置上线】O