我正在攻读Spring Core认证,我对Spring如何处理 REST 请求有所怀疑。
我知道使用REST时,资源会显示为名称,并且这些资源的操作是HTTP方法: GET , PUT , POST ,删除
我知道请求是通过对处理资源的方法使用 @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状态?
答案 0 :(得分:4)
201是HTTP status code。它表明
请求已经完成,导致创建了一个新资源。
因此,如果您的服务器返回此类状态代码,则客户端会理解已创建某些(概念性)资源。这是你的责任,你是服务器。
的一部分