博客網站API設計
本次我們要實現一個博客網站的API
在設計API的時候我們一般都會使用http協議
使用http來設計API的時候有一些需要我們去遵守的原則
- 每個資源有一個標識符,即該資源的URL
- RESTAPI 使用統一接口,如GET、POST、PUT、PATCH 和 DELETE
其實需要遵守的原則很多,在這裏只列出來在這次我們需要特別注意的
具體操作
我們這次設計一個博客網站的API,首先我們需要定義結構體來表示每一個用戶,每一個莫克
用戶結構體大概包括用戶的ID,註冊時間,等級,以及最後一次登陸時間
具體實現大致如下
type Person struct {
ID string `json:"id,omitemty"`
Registtime time `json:"registtime,omitempty"`
Level int `json:"level,omitempty"`
Lastregist time `json:"lastregist,omitempty"`
}
博客的結構體大致包括標識符,作者以及發表時間還有題目
type Person struct {
ID int `json:"id,omitemty"`
Author string `json:"author,omitemty"`
Title string `json:"title,omitemty"`
Submittime time `json:"submittime,omitempty"`
}
在這裏無論數是對用戶還是對博客
都大致使用GET、POST、PUT、PATCH 和 DELETE這幾個命令
對用戶
- GET /users:獲得所有用戶的信息,用於查詢
- GET /users/ID:獲得當前ID對應的用戶的信息,用於查詢
- POST /users:創建新的用戶,用於註冊
- PATCH /users/ID:對當前ID對應的用戶執行部分更新,當用戶升級了/更改ID/充值之後用到這個
- DELETE /users/ID:刪除當前ID對應的用戶,用於註銷用戶
對博客
- GET /blog:獲得所有博客的信息,用於查詢
- GET /blog/ID:獲得當前ID對應博客的信息,用於查詢
- GET /blog/Author:獲得當前作者所有博客的信息,用於查詢
- POST /blog:創建新的博客,用於發佈博客
- PUT /blog/ID:對當前ID對應的博客進行更改,而更改後的URL由客戶端來決定,如給自己的博客分類(添加路徑)
- PATCH /blog/ID:對當前ID對應的博客執行部分更新,當用戶對博客進行更改的時候需要用到這個
- DELETE /blog/ID:刪除位於當前ID對應的博客,用於刪除博客
狀態碼(括號內表示可能導致該狀態碼的動作):
- 200 OK :服務器成功返回用戶請求的數據(GET)
- 201 CREATED :新建或修改數據成功(POST/PUT/PATCH)
- 202 Accepted :表示一個請求已經進入後臺排隊(GET/POST/PUT/PATCH/DELETE)
- 204 NO CONTENT :成功刪除數據(DELETE)
- 400 INVALID REQUEST :請求有錯誤(GET/POST/PUT/PATCH/DELETE)
- 401 Unauthorized :用戶沒有權限(GET/POST/PUT/PATCH/DELETE)
- 403 Forbidden :用戶得到授權,但是無法訪問(GET/POST/PUT/PATCH/DELETE)
- 404 NOT FOUND :用戶發出的請求針對的是不存在的記錄(GET/POST/PUT/PATCH/DELETE)
- 406 Not Acceptable :用戶請求的格式不可得(GET)
- 410 Gone :用戶請求的資源被永久刪除(GET)
- 422 Unprocesable entity :驗證錯誤(POST/PUT/PATCH)
- 500 INTERNAL SERVER ERROR :服務器發生錯誤(GET/POST/PUT/PATCH/DELETE)