使用HTTP方法' OPTIONS'用于自定义用途?

时间:2017-03-31 00:53:18

标签: http restful-architecture api-design http-options-method

我正在研究RESTful api。现在,我将请求分类为获取,修改和操作

  • 获取使用GET
  • 修改使用POST,PUT,PATCH,DELETE
  • 操作使用OPTIONS

行动的一个例子是OPTIONS /dogs/:id/feed,这将导致狗状态改变流动服务器脚本中定义的逻辑。

那么,如果我将OPTIONS用于此用途,会有任何问题吗?

2 个答案:

答案 0 :(得分:3)

可能存在问题,因为您正在滥用OPTIONS。阅读RFC 7231的第4.2.1节(https://greenbytes.de/tech/webdav/rfc7231.html#rfc.section.4.2.1):

  

请求方法被视为"安全"如果他们定义的语义是   基本上只读;即,客户不要求,也不要求   期望,由于申请,原始服务器上的任何状态更改   目标资源的安全方法。同样,合理使用保险箱   方法预计不会造成任何伤害,财产损失或异常   原始服务器上的负担。

     

...

     

在本规范定义的请求方法中,GET,HEAD,   OPTIONS和TRACE方法被定义为安全的。

答案 1 :(得分:0)

  

行动的一个例子是OPTIONS / dogs /:id / feed,这将导致狗状态改变流动服务器脚本中定义的逻辑。

为什么在这种情况下你不使用POST?操作只是您创建/更新的内容的模型,因此您可以使用POST(或PUT,如果您知道放置资源的位置)。

在这种情况下,我会做类似的事情:

POST /dogs/:id/bowls
Content-Type: application/json
{
    "bowlContent" : <food description>
}

这将创造一个内有食物的碗(实际上是饲料的意思)。

OPTIONS通常用于查询如何使用特定资源(意味着我的选项是什么?请参阅http://zacstewart.com/2012/04/14/http-options-method.html),或者作为跨域Ajax调用中的预检请求(请参阅{{3 }})。你不应该将它用于任何其他目的。

相关问题