Java JSON中的Restlet错误响应格式
我正在使用这个框架来管理一个项目API。默认情况下,错误响应的格式似乎是HTML。我如何更改它,以便默认情况下所有错误响应都是JSON格式的 我曾尝试添加一个自定义转换器,它对实体响应非常有效,但对错误响应却没有效果 我们有110多个端点支持Java JSON中的Restlet错误响应格式,java,json,restlet,Java,Json,Restlet,我正在使用这个框架来管理一个项目API。默认情况下,错误响应的格式似乎是HTML。我如何更改它,以便默认情况下所有错误响应都是JSON格式的 我曾尝试添加一个自定义转换器,它对实体响应非常有效,但对错误响应却没有效果 我们有110多个端点支持application/json,因此理想情况下,我只想将默认错误设置为始终作为json返回。默认转换器适用于返回实际实体的所有方法 @Get("json") @Produces("application/json") public User represe
application/json
,因此理想情况下,我只想将默认错误设置为始终作为json返回。默认转换器适用于返回实际实体的所有方法
@Get("json")
@Produces("application/json")
public User represent() {
...
return result;
}
但是这个方法抛出的
ResourceException
返回HTML 如果您确定您的服务将产生的格式,那么您可以在类级别用@products注释您的服务类。这样就不需要为每个方法定义相同的
另外,一旦在类级别定义了@products,并且您想要更改特定方法的响应格式,那么您就可以将该特定方法注释为其他格式
请尝试下面的代码
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();
}
并为异常消息提供以下模型类
@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;
}
}
这似乎不起作用。异常仍然是HTML格式。服务器端异常始终是HTML格式。若您需要为异常发送JSON消息,那个么您需要在您的方法中处理异常,然后在catch块中创建您自己的JSON字符串并将其发送给客户机。这是行不通的。它只是将JSON错误包装成HTML错误。您是基于实际的Restlet知识还是基于通用WS实现?一个专门用于WS-API的框架没有一个内置的机制来控制错误响应格式,这似乎有些奇怪。我曾经尝试过简化实现,是的,它是基于通用WS-API实现的。有关详细信息,请参见。在任何情况下,我们都必须创建异常处理类。