RESTful webservices:处理无效的uri - 404错误

时间:2014-12-03 08:42:38

标签: rest error-handling

我想从我的RESTful Web服务发送状态响应XML,以防它与任何有效网址都不匹配。默认情况下,它会将404响应发送回客户端。有什么办法可以实现吗?

我使用Jersey来实现RESTful Web服务。

1 个答案:

答案 0 :(得分:0)

Jersey有能力实现通用异常处理程序控制器。基本上,如果没有捕获特定的运行时异常,则执行的控制器。

以下控制器处理Jersey无法找到另一个控制器的异常。

package com.example.controllers;

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

import com.sun.jersey.api.NotFoundException;

@Provider
public class NotFoundExceptionHandler implements ExceptionMapper<NotFoundException> {
    @Override
    public Response toResponse(NotFoundException ex) {
        return Response.status(Response.Status.NOT_FOUND).build();
    }
}

顺便说一下,以同样的方式处理任何运行时异常通常是个好主意。示例如下。

package com.example.controllers;

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 GenericExceptionHandler implements ExceptionMapper<Throwable> {
    @Override
    public Response toResponse(Throwable ex) {
        return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build();
    }
}