Json对404/503错误的回应

fed*_*lov 5 java rest dropwizard

当我使用404响应代码Dropwizard返回自定义html代码(即使Accept标题等于application/json).

控制器方法:

if (o == null) {
    return Response.status(Response.Status.NOT_FOUND).build();
} else {
    return Response.ok(o).build();
}
Run Code Online (Sandbox Code Playgroud)

Dropwizard响应:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<title>Error 404 Not Found</title>
</head>
<body><h2>HTTP ERROR 404</h2>
<p>Problem accessing /abc/1. Reason:
<pre>    Not Found</pre></p><br/>                                                
<br/>                                                
...                                               

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

如何自定义返回体404,503响应代码(等)以返回JSON?

ps
我已经实现了自定义异常映射器.但我不想为这项任务使用例外

Lio*_*orH 5

您应该使用响应构建器的类型和实体方法.

就像是:

return Response
                .status(Response.Status.NOT_FOUND)
                .type(MediaType.APPLICATION_JSON_TYPE)
                .entity(error).build();
Run Code Online (Sandbox Code Playgroud)

其中错误可序列化为json.


fed*_*lov 4

几天后我决定throw new com.sun.jersey.api.NotFoundException()按照我的习惯进行处理WebApplicationExceptionMapper。