我使用restlet框架来管理项目API。默认情况下,错误响应似乎是以HTML格式化的。如何更改,以便默认情况下所有错误响应都是JSON格式?
我尝试添加自定义转换器,该转换器非常适合实体响应但不适用于错误响应。
我们有110多个支持application/json
的端点,所以理想情况下我想将默认错误设置为始终返回为JSON。默认转换器适用于返回实际实体的所有方法。
@Get("json")
@Produces("application/json")
public User represent() {
...
return result;
}
但是此方法抛出的ResourceException
返回HTML。
答案 0 :(得分:0)
如果您确定服务的格式,那么您可以在类级别使用 @Produces 注释来注释您的服务类。然后,您不需要为每个方法定义相同的内容。
此外,一旦 @Produces 在类级别定义,并且您想要更改特定方法的响应格式,那么您可以为其他格式注释该特定方法。
尝试以下代码..
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();
}
并且在异常消息下面有Model类。
@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;
}
}