次のようなスプリング REST API にヘッダーを渡しています。
@RequestHeader(value="test-header")
ヘッダーはここでは API に必須であるため、オプションのままにしたくありません。ヘッダーが渡されない場合、API への呼び出しは、要求が構文的に間違っていることを示す標準の 400 エラーを返し、REST API に入りません。しかし、適切な ResponseBody を作成し、このエラーに対して json を返したいと思います。これを行う最善の方法についてはわかりません。スプリングインターセプターを使ってこのヘッダーが通ったかどうかを確認しようと思ったのですが、ここからレスポンスボディを作成できるかどうかわかりません。少なくとも私はそうする方法を理解できませんでした。
インターセプターアプローチはこれで機能しますか? はいの場合、どのように?そうでない場合、オプションは何ですか?誰かがこれについて助けてくれますか?
アップデート:
REST API は次のようになります。
public void methodA(@RequestHeader(value="test-header") String header, @RequestBody User user, HttpServletRequest httpRequest, HttpServletResponse httpResponse) {
...
...
}
ヘッダーが存在する場合、REST API に入り、ロジックを続行します。ただし、ヘッダーが存在しない場合は、API に入らず、単に標準の 400 エラーを返します。
私が書いたインターセプターは次のようなものです:
public class XXXInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
...
...
...
return true;
}
}