明確了請求方式,提供對應後臺所需參數,請求url連接能夠獲得後臺的響應數據
url : 返回數據的url
https://api.map.baidu.com/place/search
請求方式:
get,post,put,patch....html
請求參數:json或xml格式的key-value類型數據前端
響應結果:
返回json或xml格式的key-value類型數據web
上方請求參數的output參數值決定了響應數據的格式json
{ "status":0, "message":"ok", "results":[ { "name":"肯德基(羅餐廳)", "location":{ "lat":31.415354, "lng":121.357339 }, "address":"月羅路2380號", "province":"上海市", "city":"上海市", "area":"寶山區", "street_id":"339ed41ae1d6dc320a5cb37c", "telephone":"(021)56761006", "detail":1, "uid":"339ed41ae1d6dc320a5cb37c" } ... ] }
參照某種規則(規範)書寫url連接,同時根據規則制定請求方式,請求數據與響應結果api
提供給先後臺開發人員與測試人員查看數組
專門寫接口文檔的YAPI平臺 http://yapi.demo.qunar.com/服務器
YApi是去哪兒網的前端技術中心的一個開源可視化接口管理平臺。restful
Postman是一款接口調試工具,是一款免費的可視化軟件,同時支持各類操做系統平臺,是測試接口的首選工具。網絡
Postman能夠直接從官網:https://www.getpostman.com/downloads/下載得到,而後進行傻瓜式安裝。架構
webapi接口規範:restful
REST與技術無關,表明的是一種軟件架構風格,REST是Representational State Transfer的簡稱,中文翻譯爲「表徵狀態轉移」或「表現層狀態轉化」。
推薦閱讀 阮一峯 理解RESTful架構
推薦閱讀 阮一峯 RESTful設計指南
老是使用HTTPs協議。
用api關鍵字來標識接口url
注:看到api字眼,就表明該請求url連接是完成先後臺數據交互的
\1. 將版本信息放在URL中,如:
v1,v2表明不一樣數據版本的提現,前提是一種數據資源有多個版本
\2. 將版本信息放在請求頭中。
視網絡上任何東西都是資源,均使用名詞表示(通常爲複數形式)
https://api.example.com/v1/zoos
https://api.example.com/v1/animals
https://api.example.com/v1/employees
在url連接中獎勵不要出現操做資源的動詞
錯誤示範:https://api.baidu.com/delete-user
特殊的接口能夠出現動詞,由於這些接口通常沒有一個明確的資源,或是動詞就是接口的核心含義
GET :從服務器取出資源(一項或多項)
POST :在服務器新建一個資源
PUT :在服務器更新資源(客戶端提供改變後的完整資源)
PATCH :在服務器更新資源(客戶端提供改變的屬性)
DELETE :從服務器刪除資源
經過在url上傳參的形式傳遞搜索條件
https://api.example.com/v1/zoos?limit=10:指定返回記錄的數量
https://api.example.com/v1/zoos?offset=10:指定返回記錄的開始位置
https://api.example.com/v1/zoos?page=2&per_page=100:指定第幾頁,以及每頁的記錄數
https://api.example.com/v1/zoos?sortby=name&order=asc:指定返回結果按照哪一個屬性排序,以及排序順序
https://api.example.com/v1/zoos?animal_type_id=1:指定篩選條件
200 OK - [GET]:服務器成功返回用戶請求的數據,該操做是冪等的(Idempotent)。 201 CREATED - [POST/PUT/PATCH]:用戶新建或修改數據成功。 202 Accepted - [*]:表示一個請求已經進入後臺排隊(異步任務) 204 NO CONTENT - [DELETE]:用戶刪除數據成功。 301:永久重定向 302:暫時重定向 400 INVALID REQUEST - [POST/PUT/PATCH]:用戶發出的請求有錯誤,服務器沒有進行新建或修改數據的操做,該操做是冪等的。 401 Unauthorized - [*]:表示用戶沒有權限(令牌、用戶名、密碼錯誤)。 403 Forbidden - [*] 表示用戶獲得受權(與401錯誤相對),可是訪問是被禁止的。 404 NOT FOUND - [*]:用戶發出的請求針對的是不存在的記錄,服務器沒有進行操做,該操做是冪等的。 406 Not Acceptable - [GET]:用戶請求的格式不可得(好比用戶請求JSON格式,可是隻有XML格式)。 410 Gone -[GET]:用戶請求的資源被永久刪除,且不會再獲得的。 422 Unprocesable entity - [POST/PUT/PATCH] 當建立一個對象時,發生一個驗證錯誤。 500 INTERNAL SERVER ERROR - [*]:服務器發生錯誤,用戶將沒法判斷髮出的請求是否成功。
狀態碼是4xx時,應返回錯誤信息,error當作key。
{ error: "Invalid API key" }
針對不一樣操做,服務器向用戶返回的結果應該符合如下規範
GET /collection:返回資源對象的列表(數組) GET /collection/resource:返回單個資源對象 POST /collection:返回新生成的資源對象 PUT /collection/resource:返回完整的資源對象 PATCH /collection/resource:返回完整的資源對象 DELETE /collection/resource:返回一個空文檔
{ "status": 0, "msg": "ok", "results":[ { "name":"肯德基(羅餐廳)", "location":{ "lat":31.415354, "lng":121.357339 }, "address":"月羅路2380號", "province":"上海市", "city":"上海市", "area":"寶山區", "street_id":"339ed41ae1d6dc320a5cb37c", "telephone":"(021)56761006", "detail":1, "uid":"339ed41ae1d6dc320a5cb37c" } ... ] }
RESTful API最好作到Hypermedia,即返回結果中提供連接,連向其餘API方法,使得用戶不查文檔,也知道下一步應該作什麼。
{"link": { "rel": "collection https://www.example.com/zoos", "href": "https://api.example.com/zoos", "title": "List of zoos", "type": "application/vnd.yourformat+json" }}