Java Dropwizard Response.status(Response.status.NOT_FOUND).build()返回html

Java Dropwizard Response.status(Response.status.NOT_FOUND).build()返回html,java,jersey,dropwizard,Java,Jersey,Dropwizard,如果真正缺少资源,我的API将返回以下内容 { "code": 404, "message": "HTTP 404 Not Found" } 当我使用代码Response.status(Response.status.NOT\u FOUND).build()通过我的资源返回404时,我得到以下HTML作为响应 <html> <head> <meta http-equiv=&quo

如果真正缺少资源,我的API将返回以下内容

{
    "code": 404,
    "message": "HTTP 404 Not Found"
}
当我使用代码
Response.status(Response.status.NOT\u FOUND).build()通过我的资源返回404时,我得到以下HTML作为响应

<html>

<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <title>Error 404 Not Found</title>
</head>

<body>
    <h2>HTTP ERROR 404 Not Found</h2>
    <table>
        <tr>
            <th>URI:</th>
            <td>/v1/2/1/100</td>
        </tr>
        <tr>
            <th>STATUS:</th>
            <td>404</td>
        </tr>
        <tr>
            <th>MESSAGE:</th>
            <td>Not Found</td>
        </tr>
        <tr>
            <th>SERVLET:</th>
            <td>io.dropwizard.jersey.setup.JerseyServletContainer-21c99abf</td>
        </tr>
    </table>

</body>

</html>

找不到错误404
找不到HTTP错误404
URI:
/v1/2/1/100
地位:
404
信息:
找不到
SERVLET:
io.dropwizard.jersey.setup.JerseyServletContainer-21c99abf

我正在试图找出如何阻止此意外HTML并在没有数据的情况下进行响应。

我们遇到了相同的问题,并通过将
.entity(…)
设置为空字符串解决了此问题:

Response.status(NOT_FOUND).entity("").type(MediaType.APPLICATION_JSON).build()
由于这是一种黑客行为,我也渴望了解更清洁的解决方案……;)

将Jersey属性设置为
true

environment.jersey()
        .property(ServerProperties.RESPONSE_SET_STATUS_OVER_SEND_ERROR, true);

只要响应状态为4xx或5xx,就可以在容器特定的
响应
实现上选择
发送错误
设置状态
。例如,在servlet容器上,Jersey可以调用
HttpServletResponse.setStatus(…)
HttpServletResponse.sendError(…)

调用
sendError(…)
方法通常会重置实体、响应头并为指定的状态代码提供错误页面(例如servlet
error page
configuration)。但是,如果您想对响应进行后期处理(例如,通过servlet过滤器),唯一的方法是对容器响应对象调用
setStatus(…)

如果属性值为
true
则方法
Response.setStatus(…)
将用于默认的
Response.sendError(…)

属性值的类型为
布尔值
。默认值为
false

配置属性的名称是“jersey.config.server.response.setStatusOverSendError”


这就是我要找的。工作得很有魅力。没有黑客。谢谢
public static final String RESPONSE_SET_STATUS_OVER_SEND_ERROR