【发布时间】:2014-02-18 19:52:32
【问题描述】:
我正在构建一个 RESTful API,其中一部分将检查用户是否有有效的订阅。我正在考虑这样做:
GET https://api.example.org/subscriptions/me?username=johndoe&password=abc123&apikey=somekey HTTP/1.1
Host: api.example.org
Accept: application/json
HTTP/1.1 200 OK
Content-Type: application/json
{
"username": "johndoe",
"id": 5152,
"valid": true,
"valid_until": "2013-01-01 00:00:00",
"account_level": "basic"
}
系统会返回以下状态码:
- 如果用户订阅有效,则为 200
- 如果省略了用户名或密码参数,则为 400
- 如果用户凭据无效,则为 401
- 如果用户没有有效的订阅,则为 402。
- 如果用户的 API 密钥无效,则为 403
- 如果是无效用户则为 404
- 429 如果客户端发出了太多 API 请求
这是一个 RESTful API 设计吗?能不能做得更好? HTTP 403 是对无效 API 密钥的良好响应吗?
【问题讨论】:
-
返回错误时,仍然可以在文档正文中返回json数据。这样,您可以向调用者提供有关问题所在的更多详细信息。
{code:nnn, message:'Invalid API Key'}