$.get('/get/breeds/' + specie, { query: query }, function(data) {
console.log(data);
});
当我没有Exception时,我想返回一个json,但是当我拥有它时,我需要返回一个带有异常消息的字符串,但这个json解析的丢弃错误。
答案 0 :(得分:1)
单引号字符串是有效的JSON。所以你可以使用:
return Response.status(404).entity("\"" + e.getMessage() + "\"").build();
但是我建议你改为返回一个JSON对象。它使您可以灵活地返回有关错误的额外元数据。
您可以使用Map<String, Object>
:
Map<String, Object> errorDetails = new HashMap<>();
errorDetails.put("message", e.getMessage());
return Response.status(404).entity(errorDetails).build();
或者为错误详细信息创建一个类:
public class ErrorDetails {
private String message;
...
}
ErrorDetails errorDetails = new ErrorDetails;
errorDetails.setMessage(e.getMessage());
return Response.status(404).entity(errorDetails).build();
要报告HTTP API中的问题,请查看RFC 7807。
答案 1 :(得分:0)
为什么你不想使用WILDCARD表达式,
@Path("getSupportEmail/{broadcastMprId}")
@GET
@Produces(MediaType.MEDIA_TYPE_WILDCARD)
public Response getSupportEmailByBroadcastMprId(@PathParam("broadcastMprId") Integer broadcastMprId) {
return Response.ok(broadcastMprBean.getSupportEmailByBroadcastMprId(broadcastMprId)).build();
}
答案 2 :(得分:0)
从您提供的示例代码和此问题的标记中,最好使用Exception处理程序而不是捕获并返回手工制作的消息,并让@GET
方法返回您的域对象。 JAX-RS库(本例中为Jersey?)将序列化为JSON,因为您的方法是使用APPLICATION_JSON注释的。
对泽西岛来说:https://howtodoinjava.com/jersey/jax-rs-jersey-custom-exceptions-handling-with-exceptionmapper/