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;
}
}
我正在使用 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;
}
}