从WebApplicationException返回JSON正文中的错误

我正在尝试将错误消息放入WebApplicationException的正文中。 我在邮递员中获得了状态码,但尸体仍然是空的。

我试图添加一个这样的映射器

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.ext.Exceptionmapper;
import javax.ws.rs.ext.Provider;

@Provider
public class UnexpectedExceptionmapper implements Exceptionmapper<Exception> {
    private static final transient ObjectMapper MAPPER = new ObjectMapper();

    @Override
    public Response toResponse(final Exception exception) {
        ResponseBuilder builder = Response.status(Status.INTERNAL_SERVER_ERROR)
                .entity(defaultJSON(exception))
                .type(MediaType.APPLICATION_JSON);
        return builder.build();
    }

    private String defaultJSON(final Exception exception) {
        ErrorInfo errorInfo = new ErrorInfo(exception.getMessage(),exception.getMessage());

        try {
            return MAPPER.writeValueAsString(errorInfo);
        } catch (JsonProcessingException e) {
            return "{\"message\":\"An internal error occurred\"}";
        }
    }
}

但是邮差仍然告诉我,当我抛出错误时,身体仍然是空的。

throw new Exception("test")

是否有更好的方法,为什么它不起作用? 状态会更新,但不会传递带有信息的正文。

我之所以需要这样做,是因为我想传递我从另一个正在呼叫的端点得到的错误。

编辑: 我也在尝试一个简单的Response版本 但是当我抛出错误时,实体也会被忽略

  Response.status(Response.Status.UNAUTHORIZED).entity("Does not work").build();
  Response.status(Response.Status.SEE_OTHER).entity("Does work").build();

我把它扔进去测试atm。

 @POST
    @Path("/place/actionid/{nr}")
    @Produces("application/json")
    public Response getactionIdForPlaceAssetOrder(@PathParam("nr") @Valid String nr,@Valid Body body) throws Exception {
        Response response = Response.status(Response.Status.UNAUTHORIZED).entity("Some message here").build();

        return response;

上面的代码引发状态,但忽略该消息。就像我说的那样,任何错误消息都会被忽略。这可能是码头问题吗? 此刻,如果我能将任何消息传递给邮递员,我都会很高兴。

chiichi 回答:从WebApplicationException返回JSON正文中的错误

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3006933.html

大家都在问