2

所以可以说,我正在听 URL v1/shop/{PATH_PARAM}/status.xml。每当发出请求时v1/shop/some_value/status.xml,它将被重定向到我的方法。

但是可以说,用户在这条路径上犯了错误?泽西岛本身会发送“错误请求”或“未实施”方法或类似的响应。有没有办法代替球衣发送此响应,而我可以处理这些响应?假设我将创建一个新函数,它将监听我为商业案例实现的那些之外的所有内容。因此,任何结构不正确的请求或某些不受支持的媒体请求都会转到此方法,以便我可以向用户发送更合理的响应

4

2 回答 2

0

您可以制作一个Servlet Filter,将其配置为拦截与您的 Web 服务根 URL 匹配的所有 URL(甚至是部署 Web 服务的 Web 服务器的根 URL),让它将请求传递给 Web 服务,然后当响应到达过滤器,如果是某种 Web 服务错误,您可以将响应更改为您想要的任何内容,使其重定向到某个自定义错误页面等。

于 2012-10-26T22:36:04.250 回答
0

我只是使用“异常映射器”来做到这一点。这是有关如何使用 resteasy 进行操作的教程: https ://community.jboss.org/wiki/RESTEasyExceptionHandlingWithExceptionMapper?_sscc=t

一位同事告诉我,泽西岛也有类似的东西。

这是我用来确保我不会得到空内容的代码,因为有时我会忘记,而且我相信其他人会忘记查看标头/HTTP 状态。

import org.jboss.resteasy.spi.Failure;

import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;

@Provider
public class PipelineMgrExceptionMapper implements ExceptionMapper<Exception> {


    @Override
    public Response toResponse(Exception e) {
        if (e instanceof Failure) {
            Failure f = (Failure) e;
            return Response.fromResponse(f.getResponse()).entity(f.getMessage()).type(MediaType.TEXT_PLAIN).build();
        } else {
            return Response.status(500).entity(e.getMessage()).type(MediaType.TEXT_PLAIN).build();
        }
    }
}
于 2014-01-28T19:58:19.347 回答