HTTP Methods (5)

HTTP Headers (1)

Miscellaneous (3)

Resources (4)

Basics (5)

Mediatypes (1)

该如何处理用户的一个可能非常耗时的资源创建,我并不能让用户等待 API 完成。

与其创建一个真正的资源,不如创建一个临时的。与其让 HTTP 返回 201(已创建), 不如返回 202 (被接受),它告诉客户端这个请求已经被服务器接受且理解,但资源 仍未被生成。通过 Location 头来发送临时的资源。

请求:

POST /blogs HTTP/1.1
<xml>
    blogdata
</xml>

返回:

HTTP/1.1 202 Accepted
Location: /queue/12345

这个地址可能用来存储关于真正资源的状态:一个关于几时会被创建,现在已经完成或者正在运行的 ETA(Estimated Time of Arrival,估计完成时间)。

当真正的资源被创建,临时资源可能返回一个 303 (see other)。这个头地址重定向于真正的资源。 客户端可以 [DELETE] 这个临时资源或者服务器会让这个资源失效并返回一个 410

另请参见

注意

Copyright 2012 Joshua Thijssen and others. Like to contribute? Add your recipe to our github repository.
Looking for Puppet recipies? Try the Puppet CookBook.
Fork me on GitHub