gpt4 book ai didi

java - REST - 下载用户列表

转载 作者:行者123 更新时间:2023-11-30 10:10:58 25 4
gpt4 key购买 nike

上下文:

我想编写一个端点,该端点将根据用户名返回用户的 Collection。这些用户名应该如何传递到 REST 端点 - 注意我可以(可能)有很多用户名(比如 > 5000)

解决方案#1:

使用GET 端点,在客户端连接用户名并将它们作为单个请求参数传递。在服务器端拆分请求参数以获取用户名列表。

@RestController
public class UserController {

@GetMapping
// able to deserialize `filename1,filename2` to List out of the box
public Collection<User> getUser(@RequestParam List<String> usernames) {
return userService.getUsersByUsername(usernames);
}

}

解决方案#2:

使用 POST 端点并将用户名列表作为请求正文传递。虽然从编码的角度来看更清晰,但我最终还是使用了 POST 来获取数据。

@RestController
public class UserController {

@PostMapping
public Collection<User> getUser(@RequestBody List<String> usernames) {
return userService.getUsersByUsername(usernames);
}

}

问题:

  1. 两种解决方案中哪一种更好?
  2. 您是否有更好的方法将用户名列表传递到端点?

编辑:

  • 我已经根据答案中的建议更新了第一个解决方案的签名。 Spring 能够将 filename1,filename2 反序列化为 @RequestParam 开箱即用的列表。

最佳答案

POST 在这种情况下看起来更简洁,因为 -

  1. 在 URL 中发送一个巨大的字符串不是一个好主意,并且有可能出错
  2. 您需要编写额外的代码(逻辑)来在前端创建字符串并在后端拆分它。
  3. 在 URL 中发送一个巨大的字符串是不可扩展的,因为 URL 的长度有限制。

关于java - REST - 下载用户列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52660441/

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