2010年1月12日火曜日

[REST] リクエストとレスポンスのマッピング

HTTPリクエストに対して、一般的にどんなレスポンス(ステータスコード・ヘッダー・エンティティボディ)を返すのが望ましいか(または最低限なにを用意するべきか)、をまとめてみた。指針は色々なところにあるのだけれど、ぱっと見てわかる表がほしいなと思ったので。

# ベストプラクティス的なのがどこかにありそうな気がするよ・・・><。

(注)これは初心者の個人的な覚書です。またあくまで指針なので、個々のアプリの性質によって、変動は必ず生じると思っています。なにかの参考(叩き台)になれば幸いです。

メソッド
状況
ステータスコード
HTTPヘッダー
エンティティボディ
共通
リソースが見つからない、または教えたくない
404 Not Found

なし
認証情報がない、または不適切な認証情報
401 Unauthorized
WWW-Authenticate
エラーの説明
許可されないアクセス(認証情報は正しい)
403 Forbidden

エラーの説明
サポートしないHTTPメソッド
405 Method Not Allowed
Allow
なし?
サーバーエラー
500 Internal Server Error


高負荷状態のため対処できない
503 Service Unavailable


GET
成功
200 OK
Last-Modified
ETag
Content-Encoding
Content-Type
Cache-Control
Expires
リソースの表現
リソースは別URIに移動された
301 Moved Permanently
Location
(移動先URI)
なし?
正規のURIに誘導
303 See Other
Location
(正規URI)
なし?
If-Modified-Since リクエストヘッダーが指定され、かつ指定された日時以降リソースが変更されていない
304 Not Modified

なし
POST
リソース作成成功
201 Created
Location
(新規リソースURI)
リソースの表現(必要なら)
リクエスト受付(処理未完了)
202 Accepted
Location
(リクエスト固有のURI。進行状況。)
完了予定時刻?
不正な、または不完全なデータ
400 Bad Request

エラーの説明
既存のリソースと競合
409 Conflict
Location
(競合リソースのURI)
エラーの説明
PUT
リソース作成or更新成功
200 OK

リソースの表現(必要なら)
リクエスト受付(処理未完了)
202 Accepted
Location
(リクエスト固有のURI。進行状況。)
完了予定時刻?
リソース更新成功(URIが変更された)
301 Moved Permanently
Location
(移動先URI)
リソースの表現
不正な、または不完全なデータ
400 Bad Request

エラーの説明
既存のリソースと競合
409 Conflict
Location
(競合リソースのURI)
エラーの説明
DELETE
リソース削除成功
200 OK

なし?



参考

0 件のコメント:

コメントを投稿