错误处理
注意,在这些示例中,我们省略了身份验证。 一些 JSON 响应也被省略了。
客户端可以读取主页文档以获取可能错误的列表,包括它们的 HTTP 状态代码和可能的附加属性。
curl -H "Travis-API-Version: 3" https://api.travis-ci.com/
{ "": "home", "": "/", "errors": { "login_required": { "status": 403, "default_message": "login required", "additional_attributes": [ ] }, "method_not_allowed": { "status": 405, "default_message": "method not allowed", "additional_attributes": [ ] }, "not_found": { "status": 404, "default_message": "resource not found (or insufficient access)", "additional_attributes": [ "resource_type" ] } } }
标识符(例如 not_found
)代表错误响应主体中 error_type
字段的潜在值。 请参见以下示例。
curl -H "Travis-API-Version: 3" https://api.travis-ci.com/repo/1000000000
{ "": "error", "error_type": "not_found", "error_message": "repository not found (or insufficient access)", "resource_type": "repository" }
理解错误
错误响应尽可能具有描述性,有时包含额外的字段来帮助客户端理解错误发生的原因。
假设我们被允许读取仓库的用户设置,但不允许更改它。 我们可以通过检查资源的 @permissions
元数据来确认这一点。
curl -H "Travis-API-Version: 3" \ https://api.travis-ci.com/repo/999/setting/build_pushes
{ "": "setting", "": "/repo/999/setting/build_pushes", "": "standard", "": { "read": true, "write": false }, "name": "build_pushes", "value": true }
我们可以看到 write
权限为 false
。 然后,更新设置的 PATCH
请求将导致以下错误。
curl -X PATCH \ -H "Travis-API-Version: 3" \ -d '{"setting.value":false}' \ https://api.travis-ci.com/repo/999/setting/build_pushes
{ "": "error", "error_type": "insufficient_access", "error_message": "operation requires write access to user_setting", "permission": "write", "resource_type": "user_setting", "user_setting": { "": "user_setting", "": "/repo/999/setting/build_pushes", "": "minimal", "name": "build_pushes", "value": true } }
permission
字段包含在响应中,以及相关资源的 minimal
表示。