我想从我的RESTful Web服务发送一个状态响应XML,以防它与任何有效的URL不匹配。默认情况下,它将404响应发送回客户端。有什么办法可以实现?
我正在使用Jersey来实现RESTful Web服务。
最佳答案
Jersey具有实现通用异常处理程序 Controller 的功能。基本上,如果没有捕获特定的运行时异常,则执行该 Controller 。
以下 Controller 处理在Jersey找不到其他 Controller 的异常。
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();
}
}
关于rest - RESTful Web服务: Handle invalid uri - 404 Error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27267098/