【问题标题】:GET vs POST to send some parameters in restGET vs POST 在休息时发送一些参数
【发布时间】:2015-02-20 06:12:59
【问题描述】:

到目前为止,我需要公开一个需要 4 个参数的 rest api。我有两个选择:

1) GET request with 4 query params  
2) POST request with an Object passed that encapsulates 4 parameters.

如果我使用case 1),那么如果将来需要发送更多参数从而使 URL 变得冗长,因为查询参数将增加。如果我使用case 2),则将违反休息准则,因为 POST 仅用于创建/更新。

请告诉我在这种情况下什么是最好的方法。

【问题讨论】:

  • 为什么要查询参数而不是说路径参数?基本上你只是通过比较参数计数而不理解它的语义就违反了get/post。
  • 我需要传递的参数实际上是为了过滤,这就是为什么查询参数而不是路径参数,
  • 资源是什么?检查您是否尝试通过 REST 实现 RPC。
  • 我对REST没有太多经验,但我认为你的数字就像一个门槛。如果有 3 个,我会说 GET。如果有 5 个,我会说 POST。我相信如果你已经有很长的路,这很重要。例如,如果基本 URL 是 http://localhost:<port>/<module>/<category>/<pathFromclass>/<pathFromMethod>,则 4 个参数使其过长。在这种情况下,请使用 POST。

标签: java rest post get jersey-2.0


【解决方案1】:

如果您需要传递长参数或二进制参数,您通常会使用 HTTP POST 请求,并将参数包含在 POST 正文中。

通常,GET 请求应该是只读查询;他们不应更改服务器及其数据的状态。对于创建、更新和删除数据,请使用 POST 请求。 (当需要复杂的参数时,也可以使用 POST 进行只读查询。)

参考:http://rest.elkstein.org/2008/02/more-complex-rest-requests.html

另外,你可以参考这里:What is the best way to design a HTTP request when somewhat complex parameters are needed?

【讨论】:

  • 我其实不明白你说的复杂参数是什么意思。它是指要发送的参数数量吗?
  • @Anand :您是否浏览过我在上面发布的第二个链接,包含复杂的字符。
  • @Anand:供您参考:HTTP GET 请求的最大长度stackoverflow.com/questions/2659952/…
【解决方案2】:

过滤参数也可以在获取请求中作为标头参数发送。

此外,如有必要,发送更多请求参数也无害。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    • 1970-01-01
    相关资源
    最近更新 更多