RESTful应用程序的@ResponseStatus Spring注释究竟如何工作?
我正在学习Spring Core认证,并且对Spring如何处理REST请求有一些疑问。
我知道在REST中资源是以名称的形式公开的,这些资源的行为是HTTP方法: GET , PUT , POST , DELETE
我知道请求是通过在处理资源的方法上使用@RequestMapping注释来处理的。
从我所了解的标准Web应用程序和RESTful应用程序使用一些代码与客户进行通信(RESTful应用程序具有扩展的一组代码),我认为它们代表请求的状态(例如200是请求是成功的GET返回内容,etcetc)。
现在在文档中显示使用显示此示例的@ResponseStatus注释:
@RequestMapping(value="/orders", method=RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED) // 201
public void createOrder(HttpServletRequest request, HttpServletResponse response) {
Order order = createOrder(request);
// determine full URI for newly created Order based on request
response.addHeader("Location",
getLocationForChildResource(request, order.getId()));
}
因此,看前面的方法,我知道它处理HttpRequest POST请求的资源名为/ orders (使用REST资源被视为URL,是正确的?)。
但是注释究竟是什么:
@ResponseStatus(HttpStatus.CREATED) // 201
我知道201状态码意味着在POST或PUT上创建了一个nNew资源
并看看我可以阅读的官方文档:
使用状态码和应返回的原因标记方法或异常类。 处理器方法被调用时,或者抛出异常时,状态码被应用于HTTP响应。
那么究竟意味着什么? 我认为,就像在前面的例子中所做的那样,它设置了201状态,表明资源是由POST请求正确创建的。 如果这是正确的,我有两个问题:
资源是/ orders URI。 那么创建的是什么? 一个名为orders的文件(我认为这个断言是错误的)还是什么?
201状态被推出的地方?
201是一个HTTP状态码。 它表明了
请求已完成并导致创建新资源。
因此,如果您的服务器正在返回这样的状态码,那么客户端就会明白某些(概念性)资源已经创建。 这个资源是你的责任,你是服务器。
状态码是HTTP响应状态行的一部分。
链接地址: http://www.djcxy.com/p/83631.html上一篇: How exactly works the @ResponseStatus Spring annotation for RESTful application?
下一篇: Using PartitionBy to split and efficiently compute RDD groups by Key