我想实现一个REST API,并且需要在我的GET请求上使用正文。 (如下所述:HTTP GET with request body)
是否有http客户端无法通过GET请求发送正文? Fiddler能够做到这一点,虽然消息框是红色的。
答案 0 :(得分:27)
作为一般规则,REST中GET的概念是您的任何参数都在URL中发送。正如你所包含的问题的答案所表明的那样,它是可行的,但是忽略了REST的重点,那就是拥有一致的webbish界面。如果要将复杂数据传递到端点,则可能需要使用POST,用户希望该POST具有正文。我强烈建议重新考虑这种实施。
但是对于您的实际问题,确定有客户无法在GET上发送正文。大多数情况下,我想你的客户端将是程序化的,比如python的urlib2,而你可以在GET上设置一个主体,它实际上不是模块的预期用途,所以你强迫程序员变得奇怪。更重要的是,REST api的想法是与客户端无关,这就是为什么我觉得你的API设计应该在这里重新设计。
答案 1 :(得分:9)
在GET HTTP请求中使用body是个坏主意。是的,似乎是“法律上的”HTTP GET可以拥有正文,但“事实上”你会遇到问题:
你在寻找艰难的方式吗?随着身体的GET,你会遇到很多陷阱。为什么不使用其他HTTP动词?
例如,使用POST(或其他一些动词),而不是:
不要寻找更难的方法:)