首页 > 解决方案 > 何在响应对象中设置状态码 400

问题描述

我正在使用来自 javax.ws.rs-api 的 Response 对象,即使我可以设置像 Response.status(Response.status.BAD_REQUEST).build() 这样的状态,返回的响应代码始终是 200,响应正文包含 statusInfo表示 BAD_REQUEST 的参数。有没有办法根据服务器端的一些输入验证将响应代码设置为 400?

标签: javaapierror-handlingresponse

解决方案


不只是设置响应状态,而是从服务层抛出错误并让它传播到控制器。在控制器中你可以有类似的东西

@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);
    }
}

推荐阅读