回答編集履歴
1
修正
answer
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
> 調べたらステータスコードで処理の成否を判定するのが一般的とあったのですがどうすれば200以外のステータスコードが返せるでしょうか?
|
2
|
+
|
1
3
|
たとえば、HTTPステータス 500を返したい場合は
|
2
4
|
|
3
5
|
```Java
|
@@ -15,4 +17,33 @@
|
|
15
17
|
|
16
18
|
こちらの記事も分かりやすく解説されています。
|
17
19
|
|
18
|
-
[Spring Boot のデフォルトエラーメッセージを制御したい](https://qiita.com/leonis_sk/items/c954face2c5c1cbf3802)
|
20
|
+
[Spring Boot のデフォルトエラーメッセージを制御したい](https://qiita.com/leonis_sk/items/c954face2c5c1cbf3802)
|
21
|
+
|
22
|
+
> また、こういう場合にどんなステータスコードを返すべきなのかも教えていただけるとありがたいです。
|
23
|
+
|
24
|
+
エラーの原因がサーバー側にある場合、Statusコードは5xx番台を使うことが一般的だと思いますが、この質問の例(ファイルの書き込み先が存在しない、書き込み権限が無い等の理由で失敗した)で言えば、HTTP Statusコード 500 (Internal Server Error)を返すのが適切だと思います。
|
25
|
+
|
26
|
+
また、Rest APIではHTTP Statusコードの他に、クライアント側へ詳細なエラー情報を伝えるために、アプリケーションの仕様として決めたエラーレスポンスを返すこともあります。
|
27
|
+
|
28
|
+
下記は一例になりますが、`ResponseEntity<ResponseMessage>`のインスタンスを返すと
|
29
|
+
|
30
|
+
```Java
|
31
|
+
@Data
|
32
|
+
@Builder
|
33
|
+
class ResponseMessage {
|
34
|
+
private String code;
|
35
|
+
private String message;
|
36
|
+
}
|
37
|
+
```
|
38
|
+
|
39
|
+
```Java
|
40
|
+
return new ResponseEntity<ResponseMessage>(
|
41
|
+
ResponseMessage.builder().code("メッセージコード").message("メッセージ詳細").build(),
|
42
|
+
HttpStatus.INTERNAL_SERVER_ERROR);
|
43
|
+
```
|
44
|
+
|
45
|
+
クライアントにこのようなJSONがHTTP Status 500で返ります。
|
46
|
+
|
47
|
+
```json
|
48
|
+
{"code":"エラーコード","message":"メッセージ詳細"}
|
49
|
+
```
|