我正在构建一个 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。
- 403 如果用户的 API 密钥无效
- 404 如果是无效用户
- 429 如果客户端发出了太多的 API 请求
这是 RESTful API 设计吗?能不能做得更好?HTTP 403 是对无效 API 密钥的良好响应吗?