回答編集履歴

6

テキスト修正

2018/07/02 15:50

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -304,6 +304,6 @@
304
304
 
305
305
  私見ですが、とりあえず上記9個は覚えておき、適切に使い分けられるようにして、
306
306
 
307
- どれにも当てはまらない状況のときは、ステータスコード一覧を調べてみる、
307
+ どれにも当てはまらないように思える状況のときは、ステータスコード一覧を調べてみる、
308
-
308
+
309
- という対応で十分ではないかと思います。
309
+ という対応で、まずは十分ではないかと思います。

5

テキスト修正

2018/07/02 15:50

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -138,7 +138,7 @@
138
138
 
139
139
  ステータスコードの200番台系、400番台系、500番台系のうち、どれを返せば良いか?について、
140
140
 
141
- 極めて現場的なやり方の一例を示します。(※ウォータフォールではなくアジャイルです)
141
+ 極めて現場的なやり方の一例を示します。(※ウォータフォールではなくアジャイルです)
142
142
 
143
143
 
144
144
 
@@ -172,17 +172,21 @@
172
172
 
173
173
 
174
174
 
175
- > リクエストに問題がある場合は、**とりあえず** すべて400 Bad Request を返させることにしておいて、
175
+ > リクエストに問題がある場合は、**とりあえず** すべて400 Bad Request を返ことに
176
-
176
+
177
- 必要に応じて後で詳細化する
177
+ しておいて、必要に応じて後で詳細化する
178
+
179
+
180
+
178
-
181
+ ことにします。
179
-
180
-
182
+
181
- ということにします。同様にサーバー側に起因するエラーの場合、細かく分ければ違う状況でも、とりあえず
183
+ 同様にサーバー側に起因するエラーの場合、細かく分ければ違う状況でも、とりあえず
182
-
184
+
183
- 500 Internal Server Error を返すことにし、同様に、成功の場合は、200 OK だけを返させる
185
+ 500 Internal Server Error だけを返すことにし、同様に、成功の場合は、200 OK だけを
184
-
186
+
185
- という設計にしておいて、これに基づいて、サーバー側と、(JQueryなどで)フロントエンド 側を実装します。
187
+ 返す、という設計にしておいて、これに基づいて、サーバー側と、(JQueryなどで)フロントエンド側を
188
+
189
+ 実装していきます。
186
190
 
187
191
 
188
192
 
@@ -202,11 +206,11 @@
202
206
 
203
207
 
204
208
 
205
- __ログインしている状態でのみアクセス可能なリソース取得や更新をログインしていない状態で試みた場合は、__
209
+ __ログインしている状態でのみアクセス可能なリソース取得や更新をログインしていない状態__
206
-
210
+
207
- __クライアント側でログインページを表示させたいので、他の 400 Bad Request のケースと分ける意味で、__
211
+ __で試みた場合は、クライアント側でログインページを表示させたいので、他の 400 Bad Request__
208
-
212
+
209
- __401 Unauthorized を返させよう。__
213
+ __のケースと分ける意味で、401 Unauthorized を返させよう。__
210
214
 
211
215
 
212
216
 
@@ -220,13 +224,13 @@
220
224
 
221
225
 
222
226
 
223
- だとか、必要に応じて分けていき、その詳細化に応じてサーバーとフロントで実装を追加すればよいです
227
+ だとか、必要に応じて分けていき、その詳細化に応じてサーバーとフロントで実装を追加します。
224
-
228
+
225
- 逆にいえば
229
+ 逆にいえば
226
-
227
-
228
-
230
+
231
+
232
+
229
- __リクエスト不正の場合は、ステータスコードは400だけにして、詳細はレスポンスボディに記述することにしよう。__
233
+ __リクエスト不正の場合は、ステータスコードは400だけを使い、詳細はレスポンスボディに記述することにしよう。__
230
234
 
231
235
 
232
236
 
@@ -234,7 +238,7 @@
234
238
 
235
239
 
236
240
 
237
- また、成功の場合も同様で、初めは全て、200 OK を返すことにしていたけれど、何かの理由で
241
+ また、成功の場合も同様で、初めは全て、200 OK を返すことにしていたけれど、何かの理由で
238
242
 
239
243
 
240
244
 
@@ -298,6 +302,8 @@
298
302
 
299
303
 
300
304
 
301
- 私見ですが、とりあえず上記9個覚えておいて適切に使い分けることができ、どれも当はまらない
305
+ 私見ですが、とりあえず上記9個覚えておき、適切に使い分けられよう
302
-
306
+
303
- 状況のときは、ステータスコード一覧を調べてみる、という対応で十分ではないかと思います。
307
+ どれにも当てはまらない状況のときは、ステータスコード一覧を調べてみる、
308
+
309
+ という対応で十分ではないかと思います。

4

テキスト追加

2018/07/02 15:11

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -118,7 +118,7 @@
118
118
 
119
119
  ---
120
120
 
121
- 補足
121
+ **補足 1**
122
122
 
123
123
 
124
124
 
@@ -127,3 +127,177 @@
127
127
  ところですので、最終的には、レスポンスコードの一覧を見たうえで、質問者様が
128
128
 
129
129
  「これがよさそう」と思うところを選べばよろしいかと思います。
130
+
131
+
132
+
133
+ ---
134
+
135
+ **補足 2**
136
+
137
+
138
+
139
+ ステータスコードの200番台系、400番台系、500番台系のうち、どれを返せば良いか?について、
140
+
141
+ 極めて現場的なやり方の一例を示します。(※ウォータフォールではなくアジャイルです)
142
+
143
+
144
+
145
+ まず、
146
+
147
+
148
+
149
+ - 成功の場合 → 200番台系
150
+
151
+ - 失敗の場合:
152
+
153
+   ・リクエスト側に原因あり→ 400番台系
154
+
155
+   ・サーバー側に原因あり→ 500番台系
156
+
157
+
158
+
159
+ と分けられますが、リクエスト側に原因あり(400番台系)のケースとして、Aという状況と、
160
+
161
+ Bという状況の2つあった場合、
162
+
163
+
164
+
165
+ __Aによるエラーと、Bによるエラーは、ともにリクエストに原因があるので、400番台系を返させることは__
166
+
167
+ __決まっているが、Aの場合は何番で、Bの場合は何番にしたらよいだろう?__
168
+
169
+
170
+
171
+ と考えていくわけですが、このとき、具体的に何番にしたらよいか分からないときは、
172
+
173
+
174
+
175
+ > リクエストに問題がある場合は、**とりあえず**、 すべて400 Bad Request を返させることにしておいて、
176
+
177
+ 必要に応じて後で詳細化する。
178
+
179
+
180
+
181
+ ということにします。同様にサーバー側に起因するエラーの場合、細かく分ければ違う状況でも、とりあえず
182
+
183
+ 500 Internal Server Error を返すことにし、同様に、成功の場合は、200 OK だけを返させる
184
+
185
+ という設計にしておいて、これに基づいて、サーバー側と、(JQueryなどで)フロントエンド 側を実装します。
186
+
187
+
188
+
189
+ つまり、
190
+
191
+
192
+
193
+ - (200番台,400番台,500番台を返すべき状況では、)200, 400, 500 だけしか使わない
194
+
195
+
196
+
197
+ という、ざっくりな設計で**とりあえず**始めます。
198
+
199
+
200
+
201
+ その後、たとえば、
202
+
203
+
204
+
205
+ __ログインしている状態でのみアクセス可能なリソース取得や更新をログインしていない状態で試みた場合は、__
206
+
207
+ __クライアント側でログインページを表示させたいので、他の 400 Bad Request のケースと分ける意味で、__
208
+
209
+ __401 Unauthorized を返させよう。__
210
+
211
+
212
+
213
+ だとか、あるいは
214
+
215
+
216
+
217
+ __ログインしているユーザーの権限レベルでは禁止されているリクエストを受けたときは、__
218
+
219
+ __403 Forbidden を返させよう。__
220
+
221
+
222
+
223
+ だとか、必要に応じて分けていき、その詳細化に応じてサーバーとフロントで実装を追加すればよいです。
224
+
225
+ 逆にいえば
226
+
227
+
228
+
229
+ __リクエスト不正の場合は、ステータスコードは400だけにして、詳細はレスポンスボディに記述することにしよう。__
230
+
231
+
232
+
233
+ という設計も、(いいか悪いかは別として、可能か不可能かでいえば、)出来なくはない、ということになります。
234
+
235
+
236
+
237
+ また、成功の場合も同様で、初めは全て、200 OK を返すことにしていたけれど、何かの理由で、
238
+
239
+
240
+
241
+ __POST で何らかのリソースを新規作成することに成功したことを、他のリクエストの成功とは__
242
+
243
+ __区別したいので、その場合は、201 Created を返させよう。__
244
+
245
+
246
+
247
+ といった感じで詳細化していきます。
248
+
249
+
250
+
251
+ ---
252
+
253
+ **補足 3**
254
+
255
+
256
+
257
+ ご質問のタイトルである、「httpステータスコードについて」、
258
+
259
+
260
+
261
+ > どのような値をサーバーから返したほうがよいのでしょうか?
262
+
263
+
264
+
265
+ に応える良書を一冊挙げます。
266
+
267
+
268
+
269
+ [Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)](https://www.amazon.co.jp/dp/4774142042/)
270
+
271
+
272
+
273
+ 以下は、上記の書籍の目次、「第8章 ステータスコード」から引用しました。
274
+
275
+
276
+
277
+ > **8.4  よく使われるステータスコード**
278
+
279
+
280
+
281
+ > **200 OK — リクエスト成功**
282
+
283
+ **201 Created — リソースの作成成功**
284
+
285
+   **301 Moved Permanently — リソースの恒久的な移動**
286
+
287
+   **303 See Other — 別URIの参照**
288
+
289
+   **400 Bad Request ー リクエストの間違い**
290
+
291
+   **401 Unauthorized — アクセス権不正**
292
+
293
+   **404 Not Found — リソースの不在**
294
+
295
+   **500 Internal Server Error — サーバ内部エラー**
296
+
297
+   **503 Service Unavailable — サービス停止**
298
+
299
+
300
+
301
+ 私見ですが、とりあえず上記9個を覚えておいて適切に使い分けることができ、どれにも当てはまらない
302
+
303
+ 状況のときは、ステータスコード一覧を調べてみる、という対応で十分ではないかと思います。

3

テキスト追加

2018/07/02 14:51

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -113,3 +113,17 @@
113
113
 
114
114
 
115
115
  以上、参考になれば幸いです。
116
+
117
+
118
+
119
+ ---
120
+
121
+ 補足
122
+
123
+
124
+
125
+ APIの設計時に、レスポンスコードに何を返すか?というのは、個人の考え方により、意見の分かれる
126
+
127
+ ところですので、最終的には、レスポンスコードの一覧を見たうえで、質問者様が
128
+
129
+ 「これがよさそう」と思うところを選べばよろしいかと思います。

2

テキスト修正

2018/07/02 03:56

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -40,13 +40,19 @@
40
40
 
41
41
  レスポンスボディは空にするのがお約束です。
42
42
 
43
- 204を返すケースの例としては、何らかの検索キワードクエリパラメータ与えて、
43
+ 204を返すケースの例としては、何らかのリソPOST新規
44
44
 
45
- サーバー側で検索したけれど該当するリソーが1件も無かった場合です。
45
+ 作成を要求したときに、その要求が成功して、特にレポンスボディを
46
46
 
47
- リクエストの形式としては何ら不正はなく、検索も実行できた上で、何もないこと
47
+ す必要がないときに使うことがあります。
48
48
 
49
+
50
+
51
+ また、GETリクエストにクエリパラメータを与えて、リソースの検索をした結果、
52
+
53
+ 検索は正常に行われたけれども、該当するものがなく、レスポンスボディとして
54
+
49
- 正常終了のひとつとてあり得る場合は、ちらを使います。
55
+ 空を返たい場合にも用いられるとがあります。
50
56
 
51
57
 
52
58
 

1

テキスト追加

2018/07/02 03:52

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -8,9 +8,9 @@
8
8
 
9
9
  ということを、定義上、明確に示している(=ステータスコードのメッセージ部分に、
10
10
 
11
- 「存在しない」意味のテキストが含まれている。)ようなステータスコードとして
11
+ 「存在しない」意味のテキストが含まれている。)ようなステータスコードとして
12
12
 
13
- よく使ものが2つあり、時と場合に応じてより適切なほうを選ぶとよいかと思います。
13
+ よく使われるものが2つあり、時と場合に応じてより適切なほうを選ぶとよいかと思います。
14
14
 
15
15
 
16
16