2022-07-16

API 規(guī)范

1. 基本約定
  • 以 dingo api 錯誤返回為基礎(chǔ),如果有不確定的請以文檔為準(zhǔn)。
  • 正常返回數(shù)據(jù)的情況:
1. 不包含 status_code 信息
2. http code 數(shù)值區(qū)間在 200 - 300 之間。
3. 數(shù)據(jù)額外信息,需要放到 `meta` 里面。
  • 數(shù)據(jù)異常的情況:
1. http code 碼為對應(yīng)錯誤碼。
2. 需要包含 status_code (一般和 http code 碼一致),  message (錯誤提示)
3. 具體詳細(xì)錯誤返回,請放到 `errors` 里面。
2. 標(biāo)準(zhǔn)路由示例
GET /issues                                      列出所有的 issue
GET /orgs/:org/issues                            列出某個項目的 issue
GET /repos/:owner/:repo/issues/:number           獲取某個項目的某個 issue
POST /repos/:owner/:repo/issues                  為某個項目創(chuàng)建 issue
PATCH /repos/:owner/:repo/issues/:number         修改某個 issue
PUT /repos/:owner/:repo/issues/:number/lock      鎖住某個 issue
DELETE /repos/:owner/:repo/issues/:number/lock   解鎖某個 issue
2. 對于錯誤數(shù)據(jù),默認(rèn)使用 dingo 的錯誤格式, 如下結(jié)構(gòu):
'message' => ':message',          // 錯誤的具體描述
'errors' => ':errors',            // 參數(shù)的具體錯誤描述,422 等狀態(tài)提供,(此項非必需)
'status_code' => ':status_code',  // http狀態(tài)碼
'debug' => ':debug',              // debug 信息,非生產(chǎn)環(huán)境提供

-  舉個例子:
{
    "message": "Could not create new user.",
    "status_code": 422,
}

  • 下面是通用的資源異常的列表,它們都會返回 HTTP 422 狀態(tài)碼。參考
Dingo\Api\Exception\DeleteResourceFailedException
Dingo\Api\Exception\ResourceException
Dingo\Api\Exception\StoreResourceFailedException
Dingo\Api\Exception\UpdateResourceFailedException

**如果需要展示詳細(xì)錯誤,請勿放到 'message' 里, 參考: **

  if ($validator->fails()) {
            throw new Dingo\Api\Exception\StoreResourceFailedException('Could not create new user.', $validator->errors());
        }
- 返回數(shù)據(jù)格式:
{
    "message": "Could not create new user.",
    "status_code": 422,
    "errors": {
        "username": [
            "The username field is required."
        ],
        "password": [
            "The password field is required."
        ]
    }
}
  • 常用異常參考:
異常 描述 狀態(tài)碼
AccessDeniedHttpException 拒絕訪問異常 403
BadRequestHttpException 錯誤請求異常 400
ConflictHttpException 沖突異常 409
GoneHttpException 資源已經(jīng)不存在異常 410
HttpException HTTP異常 500
LengthRequiredHttpException 需要內(nèi)容長度信息異常 411
MethodNotAllowedHttpException 方法不允許異常 405
NotAcceptableHttpException 不可接受異常 406
NotFoundHttpException 找不到資源異常 404
PreconditionFailedHttpException 請求頭先決條件未滿足異常 412
PreconditionRequiredHttpException 缺少先決條件頭信息異常 428
ServiceUnavailableHttpException 服務(wù)不可用異常 503
TooManyRequestsHttpException 請求頻繁異常 429
UnauthorizedHttpException 未授權(quán)異常 401
UnsupportedMediaTypeHttpException 不支持的媒體類型異常 415
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容