我将标头传递给 spring REST api,例如:
@RequestHeader(value="test-header")
对于 API,header 在这里是必需的,所以我不想让它保持可选。当没有传递标头时,对 API 的任何调用都会返回标准 400 错误,指示请求在语法上是错误的,然后它不会进入 REST API。但是,我想构造一个正确的 ResponseBody 并为这个错误返回一个 json。我不确定执行此操作的最佳方法。我考虑过使用spring拦截器并检查此标头是否已通过,但是我不确定是否可以从此处创建响应体。至少我不知道该怎么做。
拦截器方法会为此工作吗?如果是,如何?如果没有,那么有哪些选择?有人可以帮忙吗?
更新:
这就是 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;
}
}