在你们指出之前,我已经尝试过这个解决方案
Serialize javax.ws.rs Entity to json
它并没有奏效。以下是我尝试发送回复的方式:
public CellStyle createBlueFont(){
CellStyle fontStyle = workbook.createCellStyle(); // Creates new style
Font blueFont = workbook.createFont(); // Creates new font
blueFont.setColor(HSSFColor.BLUE.index);
fontStyle.setFont(blueFont);
fontStyle.setWrapText(true);
return fontStyle;
}
其中return Response.status(fe.getHttpError())
.entity(fe)
.type(MediaType.APPLICATION_JSON)
.build();
是fe
FirstException
我的maven已经有以下条目
public class FlightException extends Exception {
private int httpError;
private int errorCode;
private String message;
public FirstException(int httpError, int errorCode, String message) {
this.httpError = httpError;
this.errorCode = errorCode;
this.message = message;
}
public int getHttpError() {
return httpError;
}
@Override
public String getMessage() {
return message;
}
}
所以问题是如何使用HTTP错误代码发送带有JSON自定义实体的Response对象?
作为旁注,如果我从之前发布的链接中将此条目更改为Glassfish条目,则会在启动时出现以下错误:
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.19</version>
</dependency>
答案 0 :(得分:0)
通常状态代码将在响应标头中提供,我想您已经知道了。如果由于某种原因需要在响应对象中发送http状态代码,则必须创建自定义Response Wrapper对象,该对象可能包含错误以及响应数据,
例如,您可以执行类似的操作,
public class ApiResponse implements Serializable {
private List<FirstException> errors;
private Map<String, Object> data;
}
然后你可以返回失败响应,如
{
"errors": [
{
"httpError": 401,
"errorCode": 401,
"message": "unauthroized request"
}
]
}
和成功回应一样,
{
"data": {
"user": {
"name": "test"
}
}
}
这种格式也与标准的json api格式,checkout http://jsonapi.org/
对齐