哪种HTTP方法最适合恢复异步任务?

时间:2017-08-07 15:35:49

标签: rest web-services http

我正在编写一个以异步方式执行某些软件安装的Web服务。在一种情况下,在安装过程中需要手动操作。因此,我暂停安装并等待用户请求应用程序恢复安装。

目前,我们可以通过在/running-install上执行GET请求来检索正在运行的安装,并在/running-install/<id>上取消使用DELETE的安装,但我找不到合适的方法来恢复暂停安装。
我想的是/running-install/<id>上的PUT正在做一个包含{"status":"running"}的身体,但对我来说感觉不太合适。
谢谢

2 个答案:

答案 0 :(得分:0)

如果您使用html表示将此协议实现为一系列网页,那么您可能会在此使用POST,因为您可能不希望客户将此视为{{3} }。

  

POST方法请求目标资源根据资源自身的特定语义处理请求中包含的表示。

很难出错。

要记住的是资源是集成资源

  

您的集成域中应该拥有的许多许多资源比业务域中的业务对象多。

因此,如果您在所需的有限资源中窃取所需的邮件时遇到问题,那么添加更多资源

根据您选择对集成协议进行建模的方式,您可以为POST,PUT,DELETE中的任何一个设置正确的案例。

事实是,如果您实际上在做REST,那么提供多个集成协议来实现相同的效果是完全合理的。超媒体客户端可以根据与书签页面上的链接相关联的语义来选择要遵循的协议。

答案 1 :(得分:0)

  

哪种HTTP方法最适合恢复异步任务?

从语义上讲,您希望用新状态替换给定任务的状态。对于这种情况,PUT似乎是一个合理的选择。

引用RFC 7231

  

<强> 4.3.4. PUT

     

PUT方法请求目标资源的状态     用表示定义的状态创建或替换     包含在请求消息有效负载中。 [...]

然后在请求有效载荷中发送新状态的表示:

PUT /api/installation/1/status HTTP/1.1
Host: example.org
Content-Type: application/json

{ "value" : "running" }

例如,成功的操作可以返回204,并且尝试使用无效状态修改状态可能会返回409

注意:answer也可能有所帮助。