モバイルアプリケーション用のサーバー側RESTアプリケーションを作成しています。私はセットアップに代わり、いくつかのHTTPエラーページを表示するので、クライアントは、これと同じJSONオブジェクトを受け取り、説明hereを、次の例外ハンドラをしようとしている:Spring RESTコントローラでベストプラクティスエラーメッセージを実装する
{
"status": 404,
"code": 40483,
"message": "Oops! It looks like that file does not exist.",
"developerMessage": "File resource for path /uploads/foobar.txt does not exist. Please wait 10 minutes until the upload batch completes before checking again.",
"moreInfo": "http://www.mycompany.com/errors/40483"
}
私は詳述したもので、私の例外をモデル化していますガイドでは、彼らはうまくいっているようです(カスタムエラーはコンソールに表示されています)。しかし、私はthisポイントで立ち往生しています。なぜなら、私はどこでBeanの設定をするのか分からないからです。
私が例外ハンドラやリゾルバなどを持っているとすれば、私はそれを別の方法で試してみると思っていました。この時点で、無効なHTTPリクエストを入力しても、私はまだSpringのWhitelabelエラーページを取得しますが、今回は例外からのカスタムエラーメッセージが表示されます。だから、自分でErrorHandler
を実装しようとした場合、hereのように、前の記事で説明した方法ではなく、Gsonや何かを使ってJSONオブジェクトを構築できるかもしれません。
私は最低限ErrorHandler
作業を取得しようとしました:
package com.myapp.controllers;
import org.springframework.boot.autoconfigure.web.ErrorController;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
@RestController
public class ErrorMessageController implements ErrorController {
private static final String ERROR_PATH = "/error";
@Override
public String getErrorPath(){
return ERROR_PATH;
}
@RequestMapping(value = ERROR_PATH)
public String renderErrorPage(HttpServletRequest request){
String errorPage = (String) request.getAttribute("javax.servlet.error.status_code");
return errorPage;
}
}
だから私は、Webページ上に表示さ孤独404
ような何かを得るために期待。
これはなぜです:しかし、その代わりに、私は、Tomcatのエラーページを取得していますか?私はどんな助けにも感謝しています。
だから、どこで '@ ExceptionHandler'メソッドを置くのですか?新しいRestControllerで? –
あなたはそれを選ぶことができます。 1つのコントローラにしか適用されない場合、そのコントローラを同じコントローラクラスに入れることができます。すべてのコントローラに適用される場合は、新しい単純なクラスを作成し、 '@ ControllerAdvice'だけで注釈を付けます。 – g00glen00b