RESTful应用程序的@ResponseStatus Spring注释究竟如何工作?

我正在学习Spring Core认证,并且对Spring如何处理REST请求有一些疑问。

我知道在REST中资源是以名称的形式公开的,这些资源的行为是HTTP方法: GETPUTPOSTDELETE

我知道请求是通过在处理资源的方法上使用@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