在 JBoss EAP 6.2 Resteasy 中部署的 Restful 服务中删除状态代码 403、404、500 的默认 HTML 响应

Remove Default HTML response for status codes 403, 404, 500 in Restful services depoyed in JBoss EAP 6.2 Resteasy

我在 Jboss EAP 6.2 + RestEasy 2.3.7 中有一个 Restful 服务 运行,我在我的代码中使用以下代码片段返回 501、404 错误代码:

对于 404, 抛出新的 WebApplicationException(Status.NOT_FOUND); 对于 500, 抛出新的 WebApplicationException();

当我针对这些更改测试我的服务时,它会发回正确的状态代码,但主体有 html 信息,如下所示的 404 信息。

请指导我如何发送这些状态代码的空白响应。

注:

我也试过下面的代码,有点不行。

        ResponseBuilder respBldr = Response.status(Status.FORBIDDEN);
        respBldr.type(MediaType.TEXT_HTML);
        respBldr.entity("");
        throw new WebApplicationException(respBldr.build());

错误页面在 ErrorReportValve 中生成。您可以利用内置的 ExceptionMappers 来生成您自己的响应内容(请参阅 http://docs.oracle.com/javaee/6/api/javax/ws/rs/ext/ExceptionMapper.html 获取文档)。您可以使用 WebApplicationException 但不限于这些。 IllegalArgumentException 的示例可能如下所示:

@Provider
public class IllegalArgumentExceptionMapper implements ExceptionMapper<IllegalArgumentException> {

    @Override
    public Response toResponse(IllegalArgumentException exception) {        
        return Response.status(Response.Status.BAD_REQUEST).entity(exception.getMessage()).build();
    }
}

这取决于您要提供什么以及以什么表示形式。我从我最近的项目中发布了一些代码,其中还包含 WebApplicationException 的示例:https://gist.github.com/mp911de/96991d30dbaa2604830e

我主要使用包含代码和有时有用的上下文详细信息的状态表示。

似乎是 EAP 6.2.4 中的错误。 附上 link (https://issues.jboss.org/browse/WFLY-1419).