在没有实体主体的情况下执行HTTP POST被认为是不好的做法吗?

Sur*_*mar 149 rest post http

我需要调用一个不需要用户输入的进程,只需要一个触发器.我计划在没有正文的情况下使用POST/uri来触发进程.我想知道从HTTP和REST角度来看这是否被认为是坏的?

Dar*_*ler 131

几个月前我在IETF HTTP工作组上问了这个问题.简短的回答是,是的,没关系,但我建议阅读该主题以获取更多细节.

  • 10 年后有任何更新的消息来源可以证实这一点吗? (17认同)
  • @BaptistePernet [RFC 7231](https://tools.ietf.org/html/rfc7231#section-4.3.3) 包含与链接线程中引用的版本基本相同的 POST 定义;RFC 引用了 [RFC 7230](https://tools.ietf.org/html/rfc7230#section-3.3.2),其中提到了“Content-Length”“_例如,Content-Length 标头字段通常以即使值为 0(表示空的有效负载主体),也会发出 POST 请求。_”,并且不会警告这样做。两者都是 2014 年的,所以_稍微_更新了一些,但似乎没有(相关地)被取代(RFC 8615 似乎不适用)。 (3认同)

Ada*_*erg 71

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


man*_*ana 45

POST完全没问题.不同于GET和POST,你正在改变系统的状态(很可能你的触发器是"做"某事和改变数据).

我已经使用POST而没有有效载荷,它"感觉"很好.在没有有效负载的情况下使用POST时应该做的一件事:传递头Content-Length: 0.当我api-client没有通过它时,我记得一些代理的问题.


yad*_*dab 14

如果你使用没有正文的POST/uri就像使用一个不带参数的函数.eg int post(void); 因此,为资源类提供函数是合理的,它可以在没有参数的情况下更改对象的状态.如果你考虑为URI实现Unix touch功能,那不是一个好的选择吗?

  • 触摸/手指是非幂等动作的教科书图示,其本质上是无内容的. (5认同)