-1
我想從我的REST風格的Web服務發送狀態響應XML,以防它與任何有效的URL不匹配。默認情況下,它會將404響應發送回客戶端。有什麼辦法可以實現?REST風格的Web服務:處理無效的URI - 404錯誤
我正在使用Jersey來實現REST風格的Web服務。
我想從我的REST風格的Web服務發送狀態響應XML,以防它與任何有效的URL不匹配。默認情況下,它會將404響應發送回客戶端。有什麼辦法可以實現?REST風格的Web服務:處理無效的URI - 404錯誤
我正在使用Jersey來實現REST風格的Web服務。
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();
}
}
404頁面通常設置在Web服務器級別(Tomcat,IIS ...)。 – lcryder 2014-12-03 12:08:52