语境:
我想编写一个端点,它将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端点并将用户名列表作为请求正文传递。虽然从编码的角度来看更清晰,但我最终使用 aPOST来获取数据。
@RestController
public class UserController {
@PostMapping
public Collection<User> getUser(@RequestBody List<String> usernames) {
return userService.getUsersByUsername(usernames);
}
}
问题:
这两种解决方案中的哪一种是更好的方法?
您是否有更好的方法将用户名列表传递到端点?
编辑:
我已经根据答案中的建议更新了第一个解决方案的签名。春天是能够反序列化filename1,filename2,列出对框@RequestParam。
慕田峪9158850
RISEBY
相关分类