RESTful API

什么是RESTful API ?

REST與技術(shù)無關(guān),代表的是一種軟件架構(gòu)風(fēng)格,REST是Representational State Transfer的簡稱,中文翻譯為“表征狀態(tài)轉(zhuǎn)移”或“表現(xiàn)層狀態(tài)轉(zhuǎn)化”。

什么是URI和URL?

URI統(tǒng)一的資源標(biāo)志符
URL統(tǒng)一的資源定位符
URI是給我們的資源進行標(biāo)識的,URL是描述我們資源地址的。

REST風(fēng)格的特點:

  1. 在web中,只要有被引用的必要都叫資源.

2.每個URI代表一個資源,獨一無二的.

  1. 客戶端通過HTTP的方法,對服務(wù)器端的資源進行操作.

  2. 客戶端和服務(wù)器之間,傳遞這種資源的某種表層.

  3. 通過超鏈接的指引,實現(xiàn)"表現(xiàn)層轉(zhuǎn)態(tài)轉(zhuǎn)移".

RESTFUL規(guī)范

面向資源編程

每個URL代表一種資源,URL中盡量不要用動詞,要用名詞.

根據(jù)methond不同,進行不同的操作

GET? : 從一個服務(wù)器取出資源(一項或多項)
POST?: 從一個服務(wù)器新建一個資源
PUT :在服務(wù)器更新資源(客戶端提供改變后的完整資源)
PATCH :在服務(wù)器更新資源(客戶端提供改變的屬性)
DELETE :從服務(wù)器刪除資源

過濾

通過在url上傳參的形式傳遞搜索條件

https://api.example.com/v1/zoos?limit=10:指定返回記錄的數(shù)量

https://api.example.com/v1/zoos?offset=10:指定返回記錄的開始位置

https://api.example.com/v1/zoos?page=2&per_page=100:指定第幾頁,以及每頁的記錄數(shù)

https://api.example.com/v1/zoos?sortby=name&order=asc:指定返回結(jié)果按照哪個屬性排序,以及排序順序

https://api.example.com/v1/zoos?animal_type_id=1:指定篩選條件

狀態(tài)碼

200 OK - [GET]:服務(wù)器成功返回用戶請求的數(shù)據(jù),該操作是冪等的(Idempotent)。
201 CREATED - [POST/PUT/PATCH]:用戶新建或修改數(shù)據(jù)成功。
202 Accepted - [*]:表示一個請求已經(jīng)進入后臺排隊(異步任務(wù))
204 NO CONTENT - [DELETE]:用戶刪除數(shù)據(jù)成功。
400 INVALID REQUEST - [POST/PUT/PATCH]:用戶發(fā)出的請求有錯誤,服務(wù)器沒有進行新建或修改數(shù)據(jù)的操作,該操作是冪等的。
401 Unauthorized - [*]:表示用戶沒有權(quán)限(令牌、用戶名、密碼錯誤)。
403 Forbidden - [*] 表示用戶得到授權(quán)(與401錯誤相對),但是訪問是被禁止的。
404 NOT FOUND - [*]:用戶發(fā)出的請求針對的是不存在的記錄,服務(wù)器沒有進行操作,該操作是冪等的。
406 Not Acceptable - [GET]:用戶請求的格式不可得(比如用戶請求JSON格式,但是只有XML格式)。
410 Gone -[GET]:用戶請求的資源被永久刪除,且不會再得到的。
422 Unprocesable entity - [POST/PUT/PATCH] 當(dāng)創(chuàng)建一個對象時,發(fā)生一個驗證錯誤。
500 INTERNAL SERVER ERROR - [*]:服務(wù)器發(fā)生錯誤,用戶將無法判斷發(fā)出的請求是否成功。

錯誤處理

狀態(tài)碼是4xx時,應(yīng)返回錯誤信息,error當(dāng)做key。

{
    error: "Invalid API key"
}

Hypermedia API

如果遇到需要跳轉(zhuǎn)的情況 攜帶調(diào)轉(zhuǎn)接口的URL

 ret = {
                code: 1000,
                data:{
                    id:1,
                    name:'小強',
                    depart_id:https://www.4399.com
                }
            }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • RESTful架構(gòu) 互聯(lián)網(wǎng)軟件:即網(wǎng)站,一種新型的軟件,采用客戶端/服務(wù)器模式,建立在分布式體系上,通過互聯(lián)網(wǎng)通信...
    零一_fb4d閱讀 340評論 0 0
  • 目錄 定義(Definitions) 數(shù)據(jù)的設(shè)計與抽象化(Data Design and Abstraction)...
    55lover閱讀 2,246評論 0 4
  • 一、API API -- Application Programming Interface,即應(yīng)用程序編程接口。...
    AlleniCode閱讀 498評論 0 0
  • 轉(zhuǎn)載自 http://www.cnblogs.com/moonz-wu/p/4211626.html 做出一個好的...
    啟艦科技閱讀 3,254評論 0 5
  • 文章導(dǎo)讀: 網(wǎng)絡(luò)應(yīng)用程序,分為前端和后端兩個部分。當(dāng)前的發(fā)展趨勢,就是前端設(shè)備層出不窮(手機、平板、桌面電腦、其他...
    創(chuàng)造new_world閱讀 326評論 0 0

友情鏈接更多精彩內(nèi)容