我正在研究RESTful api。现在,我将请求分类为获取,修改和操作。
行动的一个例子是OPTIONS /dogs/:id/feed
,这将导致狗状态改变流动服务器脚本中定义的逻辑。
那么,如果我将OPTIONS用于此用途,会有任何问题吗?
答案 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 }})。你不应该将它用于任何其他目的。