私はSpringフレームワークを使用してJavaでRESTfulなサービスを開発しています。私のサービス層で例外が発生した場合は、Httpステータスコードにバインドされた例外がスローされます。たとえば、ユーザーの認証が失敗すると、401のステータスコードで応答を送信します。Springフレームワークを使用してカスタム応答フレーズを設定するにはどうすればよいですか?
return new ResponseEntity<>(HttpStatus.valueOf(statusCode));
私は、RESTfulサービスの消費者に対して、コードだけでなくテキストの説明を送信する彼の要求に間違っていることを説明したいと思います。レスポンスボディにカスタムメッセージを追加するか、デフォルトのレスポンスフレーズを置き換えることで、これを行うことができます。たとえば、401
の場合はUnauthorized
をUser does not exist
またはIncorrect password
に置き換えます。
問題はHttpStatus
からorg.springframework.http
までです。エラーコードはテキスト応答フレーズにバインドされています。
どういうわけかそれらの応答フレーズを無効にすることができますか、別の方法が必要ですか?
デフォルトのレスポンスフレーズを置き換えることをお勧めしますか、説明メッセージをレスポンスボディに入れる方が良いでしょうか?
'setStatus(int sc、String sm)'メソッドがありますが、残念ながら期待通りに動作しません。私はそれを使用しようとすると、既存のコードのデフォルトのレスポンスフレーズを変更せず、カスタムコード、つまり488にメッセージを追加しません。これは 'sendError(int sc、String msg)'を使うことをお勧めします。レスポンスフレーズは変更されません。 [ – Derp