私はスプリングブートマイクロサービスベースのアプリケーションを構築しています。すべてのビジネスロジックを含むサービスからWebアプリケーションに戻すエラーメッセージが表示されません。私のサービスでは、次のような例外をスローします。マイクロサービスからWebappにHttpエラーメッセージが伝播しない
@ResponseStatus(HttpStatus.BAD_REQUEST)
public class Http400ServiceException extends Exception {
public Http400ServiceException() {
super("Some error message");
}
}
すべてが期待通りに動作し、応答コードが期待どおりに送信されます。だから私のサービスが403の例外を送信した場合、私はWebアプリケーションで403を取得します。私が今しようとしているのは、私のサービスの例外からエラーメッセージを受け取ることです。
問題、私は403を生成するような方法で、残りのクライアントからの私のサービスを突く
は、(JSONで)応答は次のようになります。しかし
{
"timestamp": 1459453512220
"status": 403
"error": "Forbidden"
"exception": "com.mysite.mypackage.exceptions.Http403ServiceException"
"message": "Username Rob must be between 5 and 16 characters long"
"path": "/createLogin"
}
、何らかの理由で、私は私のwebappから 'メッセージ'フィールドにアクセスすることができません。 httpError.getResponseBodyAsString()
がnullを返すされ、
@Override
public RuntimeException handleException(Exception e) {
...
if (e instanceof HttpClientErrorException) {
HttpClientErrorException httpError = (HttpClientErrorException) e;
LOGGER.info(httpError.getResponseBodyAsString());
}
...
}
しかし、私は私のログで見たときに/デバッグ中に私のアプリを実行します。私はこのようになりますWebアプリケーションのコードを処理し、いくつかの一般的なエラーを持っています。それは正しいレスポンスコードを持っています。レスポンスボディはありません。
誰かが何がうまくいかないのかについての洞察があれば、本当に感謝しています。
あなたは '@ ResponseStatus'を持っていますので、ステータスだけが返ってくると思います。また、 '@ ResponseBody'を追加する必要があります。さらにいくつかの設定が可能です。 –
これは私が今見ているものです。これまで運がなかったのに – Rob
[このパッケージ](https://github.com/RawSanj/blogAggr/tree/master/src/main/java/com/rawsanj/blogaggr/web/rest/errors)が役立つかもしれませんが。 '@ControllerAdvice'を使います。 –