我需要调用一个流程,它不需要用户的任何输入,只需要一个触发器。我计划使用POST /uri不带正文来触发该进程。我想知道从HTTP和REST的角度来看,这是否都被认为是坏的?


当前回答

如果你使用POST /uri而不带主体,这就像使用一个不带参数.e的函数。G int post (void);因此,在资源类中使用函数可以在没有参数的情况下改变对象的状态是合理的。如果你考虑实现一个URI的Unix触摸功能,这不是一个很好的选择吗?

其他回答

POST是完全可以的。在GET和POST的不同之处,您正在改变系统的状态(很可能您的触发器是“做”一些事情并更改数据)。

我使用POST已经没有有效负载,它“感觉”不错。在没有有效负载的情况下使用POST时,你应该做的一件事是:传递头Content-Length: 0。我记得当我的api-client没有通过它时,一些代理出现了问题。

如果你使用POST /uri而不带主体,这就像使用一个不带参数.e的函数。G int post (void);因此,在资源类中使用函数可以在没有参数的情况下改变对象的状态是合理的。如果你考虑实现一个URI的Unix触摸功能,这不是一个很好的选择吗?

是的,可以发送没有正文的POST请求,而是使用查询字符串参数。但是要注意,如果参数包含HTTP无效的字符,则必须对它们进行编码。

例如,如果你需要POST 'hello world'到一个端点,你必须让它看起来像这样:http://api.com?param=hello%20world

使用POST而不是GET是完全合理的,因为它还指示服务器(以及沿途的网关)不要返回缓存的响应。

几个月前,我在IETF HTTP工作组中提出了这个问题。简短的回答是:不,这不是一个坏的做法(但我建议阅读线程了解更多细节)。