我正在使用用 Spring 3.2 MVC/Tomcat 7.4/PostgreSQL 编写的简单 REST API 原型(prototype)。
现在我在想解决这些问题的最佳方法是什么:
- 有人向不存在的资源发出请求
- 有人向资源发出请求,但使用了不受支持的 HTTP 方法
- 有人向资源发出请求,但提供的数据不正确或不完整
问题3我可能可以通过检查数据并响应正确的HTTP header 来解决(HTTP 400或HTTP 404,因为由于缺少某些输入数据而找不到数据),但我不知道如何解决(在Spring中)问题 1 和 2。
处理此类异常的最佳实践是什么?
最佳答案
对于问题 1,只需返回 404 错误。
创建 404 异常:
@ResponseStatus(value = HttpStatus.NOT_FOUND)
public class ResourceNotFoundException extends RuntimeException {
}
现在从任何处理程序中抛出该错误,客户端将收到 404 错误。
对于问题 2,如果您正确设置过滤器,框架将自动生成并返回错误页面,或者如果未生成并发送 405 不允许的代码。
对于问题 3,以与问题 1 相同的方式返回 400 Bad Syntax 错误 - 或生成详细说明问题的更复杂的错误返回。
关于java - REST - 如何处理不必要的请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20563091/