-
資源路徑(URI)
查看全部 -
用戶表
ID、用戶名、密碼、注冊時間
文章表
文章 ID、標(biāo)題、內(nèi)容、發(fā)表時間、用戶 ID
查看全部 -
確認(rèn)設(shè)計要素
資源路徑:/users、/articles
HTTP 動詞:GET、POST、DELETE、PUT
過濾信息:文章的分頁篩選
狀態(tài)碼:200、404、422、403
錯誤處理:輸出 JSON 格式錯誤信息
返回結(jié)果:輸出 JSON 數(shù)組或 JSON 對象
查看全部 -
項目需求
用戶登錄、注冊
文章發(fā)表、編輯、管理、列表
查看全部 -
返回結(jié)果
針對不同操作,服務(wù)器向用戶返回的結(jié)果應(yīng)該符合以下規(guī)范:
GET /collections:返回資源對象的列表(數(shù)組)
GET /collections/identity:返回單個資源對象
POST /collections:返回新生成的資源對象
PUT /collections/identity:返回完整的資源對象
PATCH /collections/identity:返回被修改的屬性
DELETE /collections/identity:返回一個空文檔
查看全部 -
錯誤處理
如果狀態(tài)碼是 4xx 或者 5xx,就應(yīng)該向用戶返回出錯信息。一般來說,返回的信息中將 error 作為鍵名,出錯信息作為鍵值即可
{ ????“error'”:?“參數(shù)錯誤” }
查看全部 -
狀態(tài)碼
服務(wù)器向用戶返回的狀態(tài)碼和提示信息,使用標(biāo)準(zhǔn) HTTP 狀態(tài)碼。
200 OK 服務(wù)器成功返回用戶請求的數(shù)據(jù),該操作是冪等的。
201 CREATED 新建或修改數(shù)據(jù)成功。
204 NO CONTENT 刪除數(shù)據(jù)成功。
400 BAD REQUEST 用戶發(fā)出的請求有錯誤,該操作是冪等的。
401 Unauthorized 表示用戶沒有認(rèn)證,無法進(jìn)行當(dāng)前操作。
403 Forbidden 表示用戶訪問是被禁止的。
422 Unprocesable Entity 當(dāng)創(chuàng)建一個對象時,發(fā)生一個驗證錯誤。
500 INTERNAL SERVER ERROR 服務(wù)器發(fā)生錯誤,用戶將無法判斷發(fā)出的請求是否成功。
查看全部 -
過濾信息
如果記錄數(shù)量很多,服務(wù)器不可能都將它們返回給用戶。API 應(yīng)該提供參數(shù),過濾返回結(jié)果。
舉例
?offset=10:指定返回記錄的開始位置。
?page=2&per_page=100:指定第幾頁,以及每頁的記錄數(shù)。
?sortby=name&order=asc:指定返回結(jié)果排序,以及排序順序。
?animal_type_id=1:指定篩選條件
查看全部 -
HTTP 動詞
對于資源的操作(CURD),由 HTTP 動詞(謂詞)表示。
GET:從服務(wù)器取出資源(一項或多項)。
POST:在服務(wù)器新建一個資源。
PUT:在服務(wù)器更新資源(客戶端提供改變后的完整資源)
PATCH:在服務(wù)器更新資源(客戶端提供改變的屬性)。
DELETE:從服務(wù)器刪除資源。
舉例
POST /zoos:新建一個動物園
GET /zoos/ID:獲取某個指定動物園的信息
PUT /zoos/ID:更新某個指定動物園的信息
DELETE /zoos/ID:刪除某個動物園
查看全部 -
資源路徑
在 RESTful 架構(gòu)中,每個網(wǎng)址代表一種資源,所以網(wǎng)址中不能有動詞,只能有名詞。一般來說 API 中的名詞應(yīng)該使用復(fù)數(shù)。
舉例
舉例來說,有一個 API 提供動物園(zoo)的信息,還包括各種動物和雇員的信息,則它的路徑應(yīng)該設(shè)計成下面這樣。
https://api.example.com/v1/zoos //動物園資源
https://api.example.com/v1/animals //動物資源
查看全部 -
如何設(shè)計 RESTful API
資源路徑(URI)
HTTP 動詞
過濾信息
狀態(tài)碼
錯誤處理
返回結(jié)果
查看全部 -
安全性
RESTful 對于資源型服務(wù)接口來說很合適,同時特別適合對于效率要求很高,但是對于安全要求不高的場景。
SOAP 的成熟性可以給需要提供給多開發(fā)語言的,對于安全性要求較高的接口設(shè)計帶來便利。所以我覺得純粹說什么設(shè)計模式將會占據(jù)主導(dǎo)地位沒有什么意義,關(guān)鍵還是看應(yīng)用場景。
查看全部 -
效率和易用性
SOAP 由于各種需求不斷擴(kuò)充其本身協(xié)議的內(nèi)容,導(dǎo)致在 SOAP 處理方面的性能有所下降。同時在易用性方面以及學(xué)習(xí)成本上也有所
增加。
RESTful 由于其面向資源接口設(shè)計以及操作抽象簡化了開發(fā)者的不良設(shè)計,同時也最大限度的利用了 Http 最初的應(yīng)用協(xié)議設(shè)計理念。
查看全部 -
SOAP WebService
WebService 是一種跨編程語言和跨操作系統(tǒng)平臺的遠(yuǎn)程調(diào)用技術(shù)。
WebService 通過 HTTP 協(xié)議發(fā)送請求和接收結(jié)果時采用 XML 格式封裝,并增加了一些特定的 HTTP 消息頭,這些特定的 HTTP 消息頭和 XML 內(nèi)容格式就是 SOAP 協(xié)議。
查看全部 -
HTTP 協(xié)議 - 響應(yīng)
組成格式:狀態(tài)行、消息報頭、響應(yīng)正文
狀態(tài)行
HTTP-Version Status-Code Reason-Phrase CRLF
HTTP/1.1 200 OK
常用狀態(tài)碼
200 OK //客戶端請求成功
400 Bad Request //客戶端請求有語法錯誤,不能被服務(wù)器所理解
401 Unauthorized //服務(wù)器收到請求,但是拒絕提供服務(wù)
404 Not Found //請求資源不存在
500 Internal Server Error //服務(wù)器發(fā)生不可預(yù)期的錯誤
503 Server Unavailable //服務(wù)器當(dāng)前不能處理客戶端的請求
查看全部 -
HTTP 協(xié)議 - 請求
組成格式:請求行、消息報頭、請求正文
請求行
格式如下:Method Request - URI HTTP - Version CRLF
舉例
GET HTTP/1.1 CRLF
請求方法
GET 請求獲取 Request-URI 所標(biāo)識的資源
POST 在 Request-URI 所標(biāo)識的資源后附加新的數(shù)據(jù)
HEAD 請求獲取由 Request-URI 所標(biāo)識的資源的響應(yīng)消息報頭
PUT 請求服務(wù)器存儲一個資源,并用 Request-URI 作為其標(biāo)識
DELETE 請求服務(wù)器刪除 Request-URI 所標(biāo)識的資源
OPTIONS 請求查詢服務(wù)器的性能,或者查詢與資源相關(guān)的選項和需求
查看全部 -
HTTP 協(xié)議 - URL
HTTP 是一個屬于應(yīng)用層的協(xié)議,特點是簡捷、快速。
schema://host[:port]/path[?query-string][#anchor]
scheme:指定低層使用的協(xié)議(例如:http, https, ftp)
host:服務(wù)器的 IP 地址或者域名
port:服務(wù)器端口,默認(rèn)為 80
path:訪問資源的路徑
query-string:發(fā)送給 http 服務(wù)器的數(shù)據(jù)
anchor:錨
查看全部 -
資源
什么是資源?
所謂“資源”,就是網(wǎng)絡(luò)上的一個實體,或者說是網(wǎng)絡(luò)上的一個具體信息。
查看全部 -
設(shè)計概念和準(zhǔn)則
網(wǎng)絡(luò)上的所有事物都可以被抽象為資源。
每一個資源都有唯一的資源標(biāo)識,對資源的操作不會改變這些標(biāo)識。
所有的操作都是無狀態(tài)的。
查看全部 -
RESTful 是什么
本質(zhì):一種軟件架構(gòu)風(fēng)格
核心:面向資源
解決的問題
降低開發(fā)的復(fù)雜性
提高系統(tǒng)的可伸縮性
查看全部 -
如何設(shè)計RESTful API
設(shè)計資源路徑:網(wǎng)址代表一種資源,網(wǎng)址中不能出現(xiàn)動詞,只能有名詞,一般來說名詞應(yīng)該使用復(fù)數(shù)。
查看全部 -
設(shè)計RESTFul API 六要素
查看全部 -
RESTful面向資源設(shè)計API, 一種軟件架構(gòu)風(fēng)格
查看全部 -
soap WebService接口
查看全部 -
常用狀態(tài)碼
查看全部
舉報