JSON 中的 Restlet 错误响应格式

Restlet error response format in JSON

我正在使用 restlet 框架来管理项目 API。似乎默认情况下错误响应的格式为 HTML。我该如何更改它,以便默认情况下所有错误响应都采用 JSON 格式?

我已经尝试添加一个自定义转换器,它非常适合实体响应,但不适用于错误响应。

我们有 110 多个端点支持 application/json,所以理想情况下我只想将默认错误设置为始终 return as JSON。默认转换器适用于 return 实际实体的所有方法。

@Get("json")
@Produces("application/json")
public User represent() {
    ...
    return result;
}

但是这个方法抛出的ResourceException returns HTML。

如果您确定您的服务将要生成的格式,那么您可以在 class 级别使用 @Produces 注释对您的服务 class 进行注释.这样您就不需要为每个方法都定义相同的方法。

此外,一旦 @Produces 被定义为 class 级别并且您想要更改特定方法的响应格式,那么您可以为其他格式注释该特定方法.

试试下面的代码..

public Response represent(){
try{

}catch(Exception ex){
    return Response.status(500)
            .entity(new ExceptionMessage("500", ex.getMessage()))
            .type(MediaType.APPLICATION_JSON).
            build();
}
return Response.status(Response.Status.OK).entity(result).build();

}

并且有以下型号 class 用于异常消息。

@XmlRootElement
class ExceptionMessage{
    private String statusCode;
    private String errorMessage;

    public ExceptionMessage() {
    }

    public ExceptionMessage(String statusCode, String errorMessage) {
        this.statusCode = statusCode;
        this.errorMessage = errorMessage;
    }

    public String getErrorMessage() {
        return errorMessage;
    }

    public void setErrorMessage(String errorMessage) {
        this.errorMessage = errorMessage;
    }

    public String getStatusCode() {
        return statusCode;
    }

    public void setStatusCode(String statusCode) {
        this.statusCode = statusCode;
    }

}

This is the link dedicated to Restlet.