我正在设计一个通过HTTP的API,我想知道是否使用HTTP POST命令,但仅使用URL查询参数,而没有请求主体,是一种不错的方法。
注意事项:
- “良好的Web设计”要求通过POST发送非幂等动作。这是非幂等的动作。
- 当请求参数出现在URL中时,开发和调试该应用程序会更加容易。
- 该API并非旨在广泛使用。
- 似乎没有主体地发出POST请求将花费更多的工作,例如
Content-Length: 0
必须显式添加标头。 - 在我看来,没有主体的POST有点违反大多数开发人员和HTTP框架的期望。
通过URL查询而不是请求正文在POST请求上发送参数是否还有其他陷阱或优势?
编辑:正在考虑的原因是该操作不是幂等的,并且具有除检索之外的副作用。参见HTTP规范:
特别是,已经建立了约定,即GET和HEAD方法不应具有除检索之外的其他任何操作。这些方法应该被认为是“安全的”。这允许用户代理以特殊方式表示其他方法,例如POST,PUT和DELETE,以便使用户知道请求了可能不安全的操作这一事实。
...
方法还可以具有“幂等”的特性,因为(错误或过期问题除外)N> 0个相同请求的副作用与单个请求的副作用相同。GET,HEAD,PUT和DELETE方法共享此属性。同样,方法OPTIONS和TRACE不应有副作用,因此本质上是幂等的。