回答編集履歴

1

修正

2019/12/20 17:16

投稿

rubytomato
rubytomato

スコア1752

test CHANGED
@@ -1,3 +1,7 @@
1
+ > 調べたらステータスコードで処理の成否を判定するのが一般的とあったのですがどうすれば200以外のステータスコードが返せるでしょうか?
2
+
3
+
4
+
1
5
  たとえば、HTTPステータス 500を返したい場合は
2
6
 
3
7
 
@@ -33,3 +37,61 @@
33
37
 
34
38
 
35
39
  [Spring Boot のデフォルトエラーメッセージを制御したい](https://qiita.com/leonis_sk/items/c954face2c5c1cbf3802)
40
+
41
+
42
+
43
+ > また、こういう場合にどんなステータスコードを返すべきなのかも教えていただけるとありがたいです。
44
+
45
+
46
+
47
+ エラーの原因がサーバー側にある場合、Statusコードは5xx番台を使うことが一般的だと思いますが、この質問の例(ファイルの書き込み先が存在しない、書き込み権限が無い等の理由で失敗した)で言えば、HTTP Statusコード 500 (Internal Server Error)を返すのが適切だと思います。
48
+
49
+
50
+
51
+ また、Rest APIではHTTP Statusコードの他に、クライアント側へ詳細なエラー情報を伝えるために、アプリケーションの仕様として決めたエラーレスポンスを返すこともあります。
52
+
53
+
54
+
55
+ 下記は一例になりますが、`ResponseEntity<ResponseMessage>`のインスタンスを返すと
56
+
57
+
58
+
59
+ ```Java
60
+
61
+ @Data
62
+
63
+ @Builder
64
+
65
+ class ResponseMessage {
66
+
67
+ private String code;
68
+
69
+ private String message;
70
+
71
+ }
72
+
73
+ ```
74
+
75
+
76
+
77
+ ```Java
78
+
79
+ return new ResponseEntity<ResponseMessage>(
80
+
81
+ ResponseMessage.builder().code("メッセージコード").message("メッセージ詳細").build(),
82
+
83
+ HttpStatus.INTERNAL_SERVER_ERROR);
84
+
85
+ ```
86
+
87
+
88
+
89
+ クライアントにこのようなJSONがHTTP Status 500で返ります。
90
+
91
+
92
+
93
+ ```json
94
+
95
+ {"code":"エラーコード","message":"メッセージ詳細"}
96
+
97
+ ```