接口:數據交互的入口和出口,是一套規範一套標準。
硬件,如USB,電源接口等。
軟件,前後端開發時共同參考遵守的一套數據交互的標準規範。用接口可以省去大量的溝通成本,提高效率。一般架構師制定(API文檔)。
接口測試:測試後端實現是否符合接口規範(不是測試接口本身)。
實現流程:模擬客戶向服務器發送數據,然後查看響應
要素1: 定位服務器資源(通過 URL 實現: http://www.baidu.com | http://127.0.0.1:8000/資源路徑)
要素2: 模擬用戶提交數據
要素3:查看響應的結果是否符合預期
HTTP請求方法
- GET(SELECT):從服務器取出資源(一項或多項)。
- POST(CREATE):在服務器新建一個資源。
- PUT(UPDATE):在服務器更新資源(客戶端提供改變後的完整資源)。
- DELETE(DELETE):從服務器刪除資源。
RESTful 風格是約束接口操作的四種操作以及三個要素
**增:**
要素1: URL + POST
要素2: 多個數據 ------> 方式1: 鍵=值&鍵=值 方式2: JSON 格式
要素3: 200 | 201 + 添加的記錄
**刪:**
要素1: URL + GET|DELETE
要素2: 方式1: 鍵=值&鍵=值
要素3: 200|204 + 無
**改:**
要素1:URL + POST|PUT(更合適)
要素2: ------> 方式1: 鍵=值&鍵=值 方式2: JSON 格式
要素3:200 | 201 + 修改後那條記錄
**查:**
要素1: URL + GET
要素2:常用方式1 URL?鍵=值&鍵=值....
要素3:200 + 一條或多條記錄
狀態碼:
序號 | 狀態碼 | 動詞 | 說明 |
---|---|---|---|
01 | 200 OK | [GET] | 服務器成功返回用戶請求的數據,該操作是冪等的(Idempotent)冪等:無論執行操作多少次,結果都會執行1次結果相同 |
02 | 201 CREATED | [POST/PUT/PATCH] | 用戶新建或修改數據成功 |
03 | 202 Accepted | [*] | 表示一個請求已經進入後臺排隊(異步任務) |
04 | 204 NO CONTENT | [DELETE] | 用戶刪除數據成功 |
05 | 400 INVALID REQUEST | [POST/PUT/PATCH] | 用戶發出的請求有錯誤,服務器沒有進行新建或修改數據的操作,該操作是冪等的 |
06 | 401 Unauthorized | [*] | 表示用戶沒有權限(令牌、用戶名、密碼錯誤) |
07 | 403 Forbidden | [*] | 表示用戶得到授權(與401錯誤相對),但是訪問是被禁止的 |
08 | 404 NOT FOUND | [*] | 用戶發出的請求針對的是不存在的記錄,服務器沒有進行操作,該操作是冪等的 |
09 | 406 Not Acceptable | [GET] | 用戶請求的格式不可得(比如用戶請求JSON格式,但是隻有XML格式) |
10 | 410 Gone | [GET] | 用戶請求的資源被永久刪除,且不會再得到的 |
11 | 422 Unprocesable entity | [POST/PUT/PATCH] | 當創建一個對象時,發生一個驗證錯誤 |
12 | 500 INTERNAL SERVER ERROR | [*] | 服務器發生錯誤,用戶將無法判斷髮出的請求是否成功** |
對結果進行判斷
序號 | 方法 | 預期結果 |
---|---|---|
01 | GET | collection:代碼:200;數據:返回資源對象的列表(數組) |
02 | GET | collection/resource:代碼:200;數據:返回單個資源對象 |
03 | POST | collection:代碼:200/201;數據:返回新生成的資源對象 |
04 | PUT | collection/resource:代碼:200/201;數據:返回完整的資源對象 |
05 | DELETE | collection/resource:代碼:204;數據:返回爲空 |
新增數據時,數據是 JSON 格式的,必須設置 瀏覽器的 http 請求頭,不然會當成普通文本處理
Content-Type applicaton/json;charset=utf-8 (記住)
Content-Type : 提交的內容類型
application/json : 數據類型是 JSON 格式 | 大類型/小類型 img/jpg img/png .....
charset=utf-8 : 設置編碼集,utf-8 支持世界所有字符
JSON:是一種數據載體。
JSON 傳輸數據效率更高,所以部分場景下使用 JSON 替換 html 和 XML_(ajax)
但是 JSON 語法描述性不及 標籤語言,所以部分場景還得使用 html 和 xml。如果傳遞的是少量數據的話,可能使用 JSON。
語法:
格式1(JSON對象):{"鍵1":"值1","鍵2":"值2".....}
格式2(JSON數組):[值1,值2,值3.....]
格式複合: {"name":"huluwa","age":"8","aihao":["救爺爺",“吐火”,"吐水"]}
[{"name":"huluwa","age":"8"},{"name":"aotuman","age":"10"}......]