RESTful API是什么
REST -- REpresentational State Transfer 即表現(xiàn)層狀態(tài)轉(zhuǎn)移,主要是為了設(shè)計(jì)合理的路徑來(lái)管理資源吊趾。REST API可以設(shè)計(jì)出更加簡(jiǎn)潔明了的接口,幫助實(shí)現(xiàn)系統(tǒng)之間的信息傳遞和調(diào)用關(guān)系躬贡。
RESTful API怎么用
REST簡(jiǎn)單說(shuō)為了實(shí)現(xiàn)為了獲取資源信息或?qū)ζ鋵?shí)施動(dòng)作的規(guī)范。從發(fā)出請(qǐng)求方式,到返回內(nèi)容格式非竿,以及動(dòng)作完成后資源。接下來(lái)將以獲取api的scope為例來(lái)總結(jié)所學(xué)內(nèi)容谋竖。
RESTful API就是你看到這個(gè)url就知道它是用來(lái)干嘛的红柱。其主要?jiǎng)幼饔性鰟h改查,如下表所示圈盔。
REST:Resource Representational State Transfer豹芯。即“資源”在網(wǎng)絡(luò)傳輸中以某種“表現(xiàn)形式”進(jìn)行“狀態(tài)轉(zhuǎn)移”。所涉及的這三點(diǎn)重點(diǎn)是:
資源:真實(shí)的對(duì)象數(shù)據(jù)驱敲。比如我們的api铁蹈,我們的app等等。
表現(xiàn)形式:資源的外在表現(xiàn)形式众眨,如json握牧,html, img等。
狀態(tài)轉(zhuǎn)移:資源的狀態(tài)娩梨,可以通過(guò)增刪改查引起資源狀態(tài)的改變沿腰。
路徑
路徑表示的是API的具體網(wǎng)址。這個(gè)網(wǎng)址中不能有動(dòng)詞狈定,只能有名詞颂龙,而且所用的名詞往往與數(shù)據(jù)庫(kù)的表格名對(duì)應(yīng)。一般來(lái)說(shuō)纽什,數(shù)據(jù)庫(kù)中的表都是同種記錄的"集合"(collection)措嵌,所以API中的名詞也應(yīng)該使用復(fù)數(shù)。
過(guò)濾信息
再進(jìn)行過(guò)濾信息的時(shí)候要注意資源的層次芦缰,比如想要獲取scope時(shí)企巢,因?yàn)閟cope是在api層級(jí)下的,所以要先寫apis/{apiName}/scopes(這個(gè)在第一次寫時(shí)寫成了/scopes/{apiName},當(dāng)時(shí)只考慮了用復(fù)數(shù)形式让蕾,忽略了層級(jí))浪规。
狀態(tài)碼
服務(wù)向用戶返回的狀態(tài)碼和信息一般有如下幾種:(參考文檔)
200 OK - [GET]:服務(wù)器成功返回用戶請(qǐng)求的數(shù)據(jù),該操作是冪等(輸入一樣輸出一定一樣)的(Idempotent)探孝。
201 CREATED - [POST/PUT/PATCH]:用戶新建或修改數(shù)據(jù)成功笋婿。
202 Accepted - [*]:表示一個(gè)請(qǐng)求已經(jīng)進(jìn)入后臺(tái)排隊(duì)(異步任務(wù))
204 NO CONTENT - [DELETE]:用戶刪除數(shù)據(jù)成功。
400 INVALID REQUEST - [POST/PUT/PATCH]:用戶發(fā)出的請(qǐng)求有錯(cuò)誤顿颅,服務(wù)器沒(méi)有進(jìn)行新建或修改數(shù)據(jù)的操作萌抵,該操作是冪等的。
401 Unauthorized - [*]:表示用戶沒(méi)有權(quán)限(令牌、用戶名绍填、密碼錯(cuò)誤)霎桅。
403 Forbidden - [*] 表示用戶得到授權(quán)(與401錯(cuò)誤相對(duì)),但是訪問(wèn)是被禁止的讨永。
404 NOT FOUND - [*]:用戶發(fā)出的請(qǐng)求針對(duì)的是不存在的記錄滔驶,服務(wù)器沒(méi)有進(jìn)行操作,該操作是冪等的卿闹。
406 Not Acceptable - [GET]:用戶請(qǐng)求的格式不可得(比如用戶請(qǐng)求JSON格式揭糕,但是只有XML格式)。
410 Gone -[GET]:用戶請(qǐng)求的資源被永久刪除锻霎,且不會(huì)再得到的著角。
422 Unprocesable entity - [POST/PUT/PATCH] 當(dāng)創(chuàng)建一個(gè)對(duì)象時(shí),發(fā)生一個(gè)驗(yàn)證錯(cuò)誤旋恼。
500 INTERNAL SERVER ERROR - [*]:服務(wù)器發(fā)生錯(cuò)誤吏口,用戶將無(wú)法判斷發(fā)出的請(qǐng)求是否成功。