gpt4 book ai didi

web-services - 将整数列表传递给 GET REST API

转载 作者:行者123 更新时间:2023-12-04 13:59:47 25 4
gpt4 key购买 nike

我想从前端的数据库中获取实体列表。
所以我在 Spring MVC 中编写了 POST REST HTTP 调用。

但是我阅读了 HTTP 文档,该文档说每当您必须从数据库中检索数据时首选 GET 调用。
那么,是否有任何我可以将 POST 调用替换为 Angular JS 中的 GET 调用并传递整数列表。
但是,GET HTTP 有很多缺点,例如:URL 的长度是有限的。考虑到我们必须从数据库中获取 1000 个实体的情况。

请建议我获取实体的可能方法或在 Spring MVC 中编写 GET REST API 以获取整数列表(指实体的 ID)。

例如:考虑书表中有100本书,但我只想要几本书,比如id:5,65,42,10,53,87,34,23。
这就是为什么我在 POST 调用中将这个 ID 列表传递到整数列表中的原因。

目前卡住了如何将其转换为 GET 调用。简而言之,如何通过 GET REST 调用传递整数列表。

最佳答案

GET HTTP 调用的优点:它总是用于检索数据。(从这个角度来看:我们应该为每个和检索实现)

通过HTTP参数

如果您需要通过 HTTP 参数传递您的 id,请参见下面的示例:

这是您的 Spring MVC Controller 方法:

@RequestMapping(value = "/book", params = "ids", method = RequestMethod.GET)
@ResponseBody
Object getBooksById_params(@RequestParam List<Integer> ids) {
return "ids=" + ids.toString();
}

它工作正常,但对于特殊情况:说 URI 超过 2048 个字符。这意味着列表中有很多ID(例如:1000)

然后它抛出一个异常:
返回 414(请求 URI 太长)

这是 http://www.checkupdown.com/status/E414.html

经过一些研究,我的理解是:HTTP 协议(protocol)对 URI 的长度没有任何先验限制。服务器必须能够处理它们所服务的任何资源的 URI,并且如果它们提供可以生成此类 URI 的基于 GET 的表单,则应该能够处理无限长度的 URI。如果 URI 比服务器可以处理的长,服务器应该返回 414(Request_URI Too Long) 状态。

我还浏览过类似获取 GET URI 长度的网站:
  • http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.2.1

  • 因此,结论是,当运行时可能存在可变 URI 长度而不会出现此类异常时,坚持 POST 调用[return 414 (Request-URI Too Long)]

    关于web-services - 将整数列表传递给 GET REST API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27957785/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com