java - 具有相同路径但具有不同 @RequestParam 值的多个端点
问题描述
我有一个 API 路径GET /users/copy
。/users/type
我可以使用以下构造来拥有两个具有相同路径但具有不同 RequestParams 集的 API :
@GetMapping(value = "/users/copy", params = {"type"})
public ResponseEntity<UserDto> copyUserWithType(@RequestParam UserTypeEnum type) {
...
}
@GetMapping(value = "/users/copy", params = {"origin"})
public ResponseEntity<UserDto> copyUserWithOrigin(@RequestParam UserOriginEnum origin) {
...
}
但是如果我需要为不同的用户类型(如 fortype = OLD
和type = NEW
)提供不同的 API,有没有办法让GET /users/copy
他们仍然拥有相同的路径?
也许是这样的:
@GetMapping(value = "/users/copy", params = {"type=OLD"})
public ResponseEntity<UserDto> copyUserWithTypeOld(@RequestParam UserTypeEnum type) {
...
}
@GetMapping(value = "/users/copy", params = {"type=NEW"})
public ResponseEntity<UserDto> copyUserWithTypeNew(@RequestParam UserTypeEnum type) {
...
}
解决方案
实际上,答案就在问题中。
为了使不同的 API 端点具有相同的路径和相同的 @ReuqestParam 集,但具有不同的 @ReuqestParam 值,您需要指定params
属性,如下所示:
@GetMapping(value = "/users/copy", params = {"type=OLD"})
public ResponseEntity<UserDto> copyUserWithTypeOld(@RequestParam UserTypeEnum type) {
...
}
@GetMapping(value = "/users/copy", params = {"type=NEW"})
public ResponseEntity<UserDto> copyUserWithTypeNew(@RequestParam UserTypeEnum type) {
...
}
推荐阅读
- ssrs-2017 - 如何隐藏或删除帕累托图图例和轴
- python - “project_id”列中 /new_project 空值的外键完整性错误违反非空约束
- azure - KQL 查询中忽略白名单
- sql - 当列名不固定时,仅从 exec (SQL) 中插入几列
- javascript - 如何在另一个函数中使用 VAR 值?
- python - git跟踪项目中vscode设置工作区python.pythonPath的处理
- html - 带有目标的 Boostrap 响应式列
- java - 在Java中生成一些范围内的许多随机数,但有一些例外
- allennlp - AllenNLP)有没有办法为评估设置配置,特别是为读者?
- upgrade - Ojdbc8 jars 升级到 21.1.0.0 抛出 Nosuchmethod 异常 UCPservletContextListener init