后端接口規(guī)范
約定接口一般包括以下數(shù)據(jù)
- 當(dāng)前接口的路徑是什么抡四? 如 /auth/register
- 當(dāng)前接口提交數(shù)據(jù)的類型是什么? 如
-
GET
獲取數(shù)據(jù) -
POST
提交或者創(chuàng)建 -
PATCH
修改數(shù)據(jù),部分修改 -
DELETE
刪除數(shù)據(jù) -
PUT
修改數(shù)據(jù)睦裳,整體替換原有數(shù)據(jù)
- 參數(shù)類型/格式,比如是 json 格式阿纤,還是 application/x-www-form-urlencoded的數(shù)據(jù)
- 參數(shù)字段弹惦,及限制條件
- 返回成功的數(shù)據(jù)格式
- 返回失敗的數(shù)據(jù)格式
這里以http://blog-server.hunger-valley.com
來作為后端接口線上地址的根路徑
curl的使用
-d:用來傳遞數(shù)據(jù)
-X 請求類型:發(fā)送的請求類型(對于GET請求可以不加-X)
-i:展示響應(yīng)頭。一般用來測試登錄端口查看setCookie里的cookie
-b “cookie字段”:發(fā)送請求的時候帶上cookie窝剖。一般用在注銷登錄和判斷用戶是否登錄以及對已經(jīng)存在的數(shù)據(jù)進行修改的端口中。
如:
curl -d "title=hello&content=world&description=jirengu" -X POST "http://blog-server.hunger-valley.com/blog" -b "connect.sid=s%3AdyZh-z5fqPU_ThG9Qn8nGD6euI0UI75e.8uso0k4P6WzqWv02iQCUwxbUML2RdlOCnpKp7RSJpj0 " -i
上面的命令的意思就是發(fā)送一個POST請求傳遞
"title=hello&content=world&description=jirengu"字段并且?guī)蟘onnect.sid...這個cookie然后顯示響應(yīng)頭
具體端口及curl的使用
POST /auth/register
功能: 用戶注冊
提交參數(shù)
- 參數(shù)類型:Content-Type: application/x-www-form-urlencoded;charset=utf-8
- 參數(shù)字段
- username : 用戶名, 長度1到15個字符酥夭,只能是字母數(shù)字下劃線中文
- password : 密碼, 長度6到16個任意字符
返回數(shù)據(jù)
- 失敗
- 返回格式 {"status": "fail", "msg": "錯誤原因"}
- 成功
- 返回格式
{
"status": "ok",
"msg": "注冊成功",
"data": {
"id": 1,
"username": "hunger",
"avatar": "http://avatar.com/1.png",
"updatedAt": "2017-12-27T07:40:09.697Z",
"createdAt": "2017-12-27T07:40:09.697Z"
}
}
測試
# -d 是用來傳遞數(shù)據(jù)
# 對于 POST 和 PUT 可以: -X POST赐纱, 對于 GET,不加 -X
curl -d "username=hunger1&password=123456" -X POST "http://localhost:3000/auth/register"
POST /auth/login
功能: 用戶登錄
提交參數(shù)
- 參數(shù)類型:
Content-Type: application/x-www-form-urlencoded;charset=utf-8
- 參數(shù)字段
-
username
: 用戶名, 長度1到15個字符熬北,只能是字母數(shù)字下劃線中文 -
password
: 密碼, 長度6到16個任意字符
-
返回數(shù)據(jù)
- 失敗
- 返回格式 {"status": "fail", "msg": "用戶不存在"} 或者 {"status": "fail", "msg": "密碼不正確"}
- 成功
- 返回格式
{
"status":"ok",
"msg": "登錄成功",
"data": {
"id": 1,
"username": "hunger",
"avatar: "頭像 url",
"createdAt": "2017-12-27T07:40:09.697Z",
"updatedAt": "2017-12-27T07:40:09.697Z"
}
}
測試命令
# -i 可以展示響應(yīng)頭
# 會發(fā)現(xiàn)響應(yīng)頭里有 setCookie 信息疙描,得到 cookie
curl -d "username=hunger1&password=123456" "http://localhost:3000/auth/login" -i
GET /auth
功能: 判斷用戶是否登錄
提交參數(shù): 無
返回數(shù)據(jù)
- 已經(jīng)登錄的情況
{
"status": "ok"
"isLogin": true,
"avatar": "http://avatar.com/1.png",
"data": {
"id": 1,
"username": "hunger",
"updatedAt": "2017-12-27T07:40:09.697Z",
"createdAt": "2017-12-27T07:40:09.697Z"
}
}
- 沒有登錄的情況
{
"status": "ok"
"isLogin": false
}
測試命令
#先通過登錄接口獲取 cookie,帶上 cookie 就能測試登錄
curl "http://localhost:3000/auth" -b "connect.sid=s%3AmeDbrn03UtTM8fqChaPQ20wmWlnKeHiu.e3uMtu7j1zQ1iNeaajCmxkYYGQ%2FyHV1ZsozMvZYWC6s"
GET /auth/logout
功能: 注銷登錄
提交參數(shù): 無
返回數(shù)據(jù):
- 失敗
- 返回格式
{"status": "fail", "msg": "用戶尚未登錄"}
- 返回格式
- 成功
- 返回格式
{"status": "fail", "msg": "注銷成功"}
- 返回格式
測試命令
curl "http://localhost:3000/auth/logout" -b "connect.sid=s%3AmeDbrn03UtTM8fqChaPQ20wmWlnKeHiu.e3uMtu7j1zQ1iNeaajCmxkYYGQ%2FyHV1ZsozMvZYWC6s"