REST - 获取更新的资源

时间:2014-05-02 08:10:18

标签: web-services rest url-design

我正致力于从博客中删除特定链接的服务。该服务调用不同的站点,这些站点会拉入并存储数据。

我在更新服务器上的数据时遇到了麻烦,我现在使用动词更新来提取最新的链接。

我目前使用以下端点:

GET /user/{ID}/links - gets all previously scraped links (few milliseconds)
GET /user/{ID}/links/update - starts scraping and returned the scraped data (few seconds) 

第二个网址有什么好的选择?我想出了一些例子。

GET /user/{ID}/links?collection=(all|cached|latest)
GET /user/{ID}/links?update=1
GET /user/{ID}/links/latest
GET /user/{ID}/links/new

1 个答案:

答案 0 :(得分:4)

使用GET启动进程并不是非常RESTful。您并非真正获取信息,而是要求服务器处理信息。您可能希望针对/ user / {ID] /链接进行POST(如果您对那里的细节感到好奇,那么PUT与POST的快速Google将为您提供无尽的阅读)。您有两个选择:

使用后台进程进行POST:如果使用后台进程(或队列),则可以返回202 Accepted,表示该服务已接受该请求并即将执行某些操作。 202通常表示客户端不应该等待,这在执行诸如抓取的时间相关动作时是有意义的。然后,客户端可以在第一个链接上发出GET请求以检索更新。

Last-Modified标头的广告使用可以告诉客户端何时有新的更新。如果你想超级想象,你可以实现HEAD / user / {ID} /链接,它们将返回一个没有响应体的Last-Modified标头(节省带宽和处理)。

直接处理POST 如果您在请求期间进行处理(不是宏观计划中的一个好计划),您可以返回200 OK以及响应正文包含更新的链接。

后续GET将正常运行。

More info here

And here

And here