私はRESTfulAPIを構築しています。その一部は、ユーザーが有効なサブスクリプションを持っているかどうかをチェックします。私はこのようにすることを考えています:
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
- クライアントがあまりにも多くのAPIリクエストを行った場合は429
これはRESTfulAPIデザインですか?もっと上手くできますか?HTTP 403は無効なAPIキーに対する適切な応答ですか?