java - 何在响应对象中设置状态码 400
问题描述
我正在使用来自 javax.ws.rs-api 的 Response 对象,即使我可以设置像 Response.status(Response.status.BAD_REQUEST).build() 这样的状态,返回的响应代码始终是 200,响应正文包含 statusInfo表示 BAD_REQUEST 的参数。有没有办法根据服务器端的一些输入验证将响应代码设置为 400?
解决方案
不只是设置响应状态,而是从服务层抛出错误并让它传播到控制器。在控制器中你可以有类似的东西
@Controller
public class MyService {
@RequestMapping(value = "your api url path", method = RequestMethod.GET, produces = "application/
public Response jsonAccounts(HttpServletRequest request,
HttpServletResponse response) throws Exception {
return Response.status(Response.Status.BAD_REQUEST).entity("Bad request received").build();
}
@ExceptionHandler(MyBadException.class)
@ResponseStatus(value = HttpStatus.BAD_REQUEST, reason = "Bad request Request Exception")
public void unexpectedError(HttpServletRequest request, Exception
log.debug("return HttpStatus.BAD_REQUEST, unexpectedError due to Exception", e);
}
}
推荐阅读
- r - 如何在 R 中矢量化 %in% (又名匹配)?
- mysql - MySQL IFNULL 仍然返回 NULL
- reactjs - 如何强制刷新图像
- javascript - 如何在 http 请求中使用存储数据?
- c# - MySQLX.GetSession 异常::'预期的消息 id:2。收到的消息 id:10'
- python-3.x - 网络刮刀在美丽的汤中不起作用
- java - 如何从片段中调用一个类
- python - 如何使用 __pycache__ 文件夹运行 Python 项目?
- java - Java 8 使用流重写复杂的 for 循环
- javascript - 如何使用单个函数在画布上绘制多个图像?