gpt4 book ai didi

java - 具有多个参数的 RESTful Spring 服务

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:59:42 24 4
gpt4 key购买 nike

我正在构建一个 Restful 服务,它需要接受任何 个参数,而不是下面示例中的一个

假设以下服务例程

@RequestMapping("/start/id/{id}", RequestMethod.GET)
public void startService(@PathVariable String id) {...}

有一个基于RestTemplate 的客户端实现

restTemplate.getForObject("/start/id/{id}", null, id);

问题:但是考虑到它可能有数千个id,我必须使用哪些稳定的方法来使用RestTemplate 在一个请求中发送所有参数? ?我看到了建议

  • 将请求正文添加到 GET 请求 - RestTemplate 似乎不可能?
  • 在 id 中使用分隔符(例如,id1|id2|....|idn)- 看起来像一个hack
  • 先输入参数,然后发出 GET 以引用 ID - 双重请求,似乎不直观
  • 添加多个 URL 参数 (?id=foo&id=bar&.....&id=foobar)

我知道以前有人问过类似的问题(calling-a-restful-service-with-many-parametershow-to-create-rest-urls-without-verbscan-you-build-a-truly-restful-service-that-takes-many-parameters),但我发现很难找到满意的答案,或者至少是基于 RestTemplate 的答案。 .

最佳答案

我认为 RESTful 设计的任何部分都没有声明您的 url 结构应该能够解析整个集合。您的第一个(请求参数)和第三个(url 参数)建议可能是最好的。

我会推荐第一个。我确定它在 resttemplate 中是允许的。查看您提供的文档,只需实现其中一种发布方法即可。他们每个人都将请求作为参数。在那里,我确定有某种 getRequestParameters() 方法的实现,您可以使用它从包含您的 ID 的请求正文中解析 json/xml。

或者,更好的是,所有这些 ID 是如何关联的?他们都有共同的父资源吗?如果是这样,那么您可以(并且可能应该)做类似...

/commonparent/{parentId}

然后在您的请求处理程序中,查询所有 ID,然后像往常一样进行。

关于java - 具有多个参数的 RESTful Spring 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8578694/

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