回答編集履歴
6
テキスト修正
test
CHANGED
@@ -304,6 +304,6 @@
|
|
304
304
|
|
305
305
|
私見ですが、とりあえず上記9個は覚えておき、適切に使い分けられるようにして、
|
306
306
|
|
307
|
-
どれにも当てはまらない状況のときは、ステータスコード一覧を調べてみる、
|
307
|
+
どれにも当てはまらないように思える状況のときは、ステータスコード一覧を調べてみる、
|
308
|
-
|
308
|
+
|
309
|
-
という対応で十分ではないかと思います。
|
309
|
+
という対応で、まずは十分ではないかと思います。
|
5
テキスト修正
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
|
-
> リクエストに問題がある場合は、**とりあえず**
|
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
テキスト追加
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
テキスト追加
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
テキスト修正
test
CHANGED
@@ -40,13 +40,19 @@
|
|
40
40
|
|
41
41
|
レスポンスボディは空にするのがお約束です。
|
42
42
|
|
43
|
-
204を返すケースの例としては、何らかの
|
43
|
+
204を返すケースの例としては、何らかのリソースをPOSTで新規
|
44
44
|
|
45
|
-
|
45
|
+
作成を要求したときに、その要求が成功して、特にレスポンスボディを
|
46
46
|
|
47
|
-
|
47
|
+
返す必要がないときに使うことがあります。
|
48
48
|
|
49
|
+
|
50
|
+
|
51
|
+
また、GETリクエストにクエリパラメータを与えて、リソースの検索をした結果、
|
52
|
+
|
53
|
+
検索は正常に行われたけれども、該当するものがなく、レスポンスボディとして
|
54
|
+
|
49
|
-
|
55
|
+
空を返したい場合にも用いられることがあります。
|
50
56
|
|
51
57
|
|
52
58
|
|
1
テキスト追加
test
CHANGED
@@ -8,9 +8,9 @@
|
|
8
8
|
|
9
9
|
ということを、定義上、明確に示している(=ステータスコードのメッセージ部分に、
|
10
10
|
|
11
|
-
「存在しない」意味のテキストが含まれている。)ようなステータスコードとして
|
11
|
+
「存在しない」意味のテキストが含まれている。)ようなステータスコードとして、
|
12
12
|
|
13
|
-
よく使
|
13
|
+
よく使われるものが2つあり、時と場合に応じてより適切なほうを選ぶとよいかと思います。
|
14
14
|
|
15
15
|
|
16
16
|
|