我想实现一个 REST API,并且在我的 GET 请求上需要一个正文。(就像这里讨论的:HTTP GET with request body)
是否存在无法通过 GET 请求发送正文的 http 客户端?Fiddler 能够做到这一点,尽管消息框是红色的。
我想实现一个 REST API,并且在我的 GET 请求上需要一个正文。(就像这里讨论的:HTTP GET with request body)
是否存在无法通过 GET 请求发送正文的 http 客户端?Fiddler 能够做到这一点,尽管消息框是红色的。
作为一般规则,REST 中 GET 的想法是您的任何参数都在 URL 中发送。正如您所包含的问题的答案所示,它是可行的,但错过了 REST 的要点,即拥有一致的 webbish 界面。如果您想将复杂的数据传递到您的端点,您可能需要使用 POST,您的用户会期望它有一个正文。我强烈建议重新考虑该实施。
但是对于您的实际问题,请确保有些客户端无法在 GET 上发送正文。大多数情况下,我会想象您的客户将是编程的,例如 python 的 urlib2,虽然您可以在 GET 上设置一个主体,但这并不是该模块的真正预期用途,因此您迫使程序员变得怪异。更重要的是,REST api 的想法是与客户端无关,这就是为什么在我看来你的 API 设计应该在这里重新设计。
在 GET HTTP 请求中使用 body 是个坏主意。是的,似乎“法律上”的 HTTP GET 可以有正文,但“事实上”你会遇到问题:
你在寻找艰难的道路吗?使用带有身体的 GET,您将遇到很多陷阱。为什么不使用其他 HTTP 动词?
例如使用 POST(或其他一些动词),而不是:
不要寻找更难的方法:)