【发布时间】:2015-10-15 00:04:06
【问题描述】:
我正在将标头传递给 spring REST api,例如:
@RequestHeader(value="test-header")
header 对于 API 来说是强制性的,所以我不想让它成为可选的。 当没有传递标头时,对 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;
}
}
【问题讨论】:
-
如果参数存在,如何处理请求?你的处理程序是什么样的?
标签: java spring spring-mvc interceptor spring-restcontroller