当我在我的服务中抛出一个WebApplicationException时,我会得到一个404响应代码,这正是我所期待的
throw new WebApplicationException(Response.Status.NOT_FOUND);
当我尝试通过ResponseBuilder在我的异常中添加更多信息时,我得到了500响应代码。这是我的增强代码和我得到的响应消息:
List<Error> errors = new ArrayList<>();
errors.add(new Error(ErrorCode.PDF_GENERATION_ERROR));
ErrorResponse errResponse = new ErrorResponse();
errResponse.setErrors(errors);
throw new WebApplicationException(Response.status(Response.Status.NOT_FOUND).entity(errResponse).build());
javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageExceptio n:Java的消息体编写器 class idexx.ordering.rest.common.types.ErrorRe sponse,以及Java类型 class idexx.ordering.rest.common.types.ErrorResponse和MIME媒体 类型application / octet-stream未找到
我的REST服务具有以下方法签名:
@Produces("application/pdf")
@GET
@Path("/{id}")
public Response getPdfById(@PathParam("id") final Long id) {
无论如何,当我抛出WebApplicationException时,我可以在响应中获得额外的错误代码信息吗?
答案 0 :(得分:0)
试试这个:
String errResponse = "convert your errors to text";
throw new WebApplicationException(Response.status(Response.Status.NOT_FOUND).entity(errResponse).build());
这可能会有效,因为JAX-RS可以转换基本类型,但要转换List<Error>
,您需要注册自定义MessageBodyWriter
。