回答編集履歴

1

501がサーバレベルで利用されるメソッドであると判断したため、その趣旨を追記

2015/09/13 12:11

投稿

sounisi5011
sounisi5011

スコア697

test CHANGED
@@ -17,3 +17,79 @@
17
17
  > * 自身が認識できない/実装していない 要請メソッドを受信したときは、 501 (Not Implemented)で応答するべきである。
18
18
 
19
19
  > * 自身に既知であるが,ターゲットリソースには許容されない 要請メソッドを受信したときは、 405 (Method Not Allowed)で応答するべきである。
20
+
21
+
22
+
23
+ ---
24
+
25
+
26
+
27
+ 【2015/09/13追記】
28
+
29
+
30
+
31
+ ただし、この`501 Not Implemented`はサーバそのものが対応していない場合に用いるレスポンスコードのようです。
32
+
33
+
34
+
35
+ [HTTP response codes - HTTP | MDN](https://developer.mozilla.org/ja/docs/HTTP/HTTP_response_codes#501)
36
+
37
+
38
+
39
+ > 501 Not Implemented リクエストメソッドがサーバでサポートされておらず、扱えないことを示します。サーバがサポートしなければならない (従って、このコードを返してはならない) メソッドは GET と HEAD だけです。
40
+
41
+
42
+
43
+ [[対処法]501 Not Implemented](http://www.bmoo.net/archives/2012/04/313925.html)
44
+
45
+
46
+
47
+ > GET
48
+
49
+ > もっとも利用されることが多いメソッド。URIで指定したリソースを返す。HTTP1.1ではGETメソッドのサポートが必須となっているため、このメソッドでのリクエストで501エラーが発生することは考えられない。
50
+
51
+
52
+
53
+ [HTTPステータス・コードとメソッド - CyberLibrarian](http://www.asahi-net.or.jp/~ax2s-kmtn/ref/status.html#sc5)
54
+
55
+
56
+
57
+ > 501 Not Implemented 未実装 1.0
58
+
59
+ > サーバーは、リクエストを実行するために必要な機能をサポートしていない。
60
+
61
+
62
+
63
+ [http://www.spencernetwork.org/reference/rfc2616-ja-HTTP1.1.txt](http://www.spencernetwork.org/reference/rfc2616-ja-HTTP1.1.txt)
64
+
65
+
66
+
67
+ > 10.5.2 501 Not Implemented
68
+
69
+
70
+
71
+ > サーバは、リクエストを実行するのに必要な機能をサポートしていない。こ
72
+
73
+ > れは、サーバがリクエストメソッドを認識できない時の適切なレスポンスで
74
+
75
+ > あり、どんなリソースに対してもそれをサポートする能力がない。
76
+
77
+
78
+
79
+ [RFC 7231 — HTTP/1.1: Semantics and Content (日本語訳)](http://www.hcn.zaq.ne.jp/___/WEB/RFC7231-ja.html#section-6.6.2)
80
+
81
+
82
+
83
+ > 状態°コード 501 (Not Implemented)は、[ サーバが,要請を履行するために要求される機能性をサポートしない ]ことを指示する。 これは、[ サーバが要請メソッドを認識せず,[ どのリソースも それをサポートする能力を備えていない ]]ときに適切な応答になる。
84
+
85
+
86
+
87
+ 上記より、`501 Not Implemented`はサーバレベルで認識できない/実装していない(=どのリソースでもサポートしていない)メソッドの場合に返すべきであり、
88
+
89
+ Web APIなど、サーバが対応しているがアプリケーションが対応していない場合は、「要求されたリソースに対して許されていない場合」(アプリケーションが該当メソッドを許容しない)であるとして`405 Method Not Allowed`を利用するべきであると考えられます。
90
+
91
+
92
+
93
+ Web APIなどであれば、POSTメソッドのみに対応するリソースというものも設計できます。
94
+
95
+ しかし仕様により、GET/HEADメソッドでは`501 Not Implemented`を返してはならないので、リソースが対応していない場合は`405 Method Not Allowed`とするべきでしょう。