相同的端点具有不同的路径变量



我在当前的项目中面临一个小问题,通过使用相同的URI但使用不同的路径变量创建多个端点,如下面的代码所示:

@GetMapping(value= { "/users",
"/users/{grade}/{profession}",
"/users/{region}/{profession}",
"/users/{region}/{grade}",  
})
public List<AppUser> filtreListUsers(
@PathVariable Optional<String> region,
@PathVariable Optional<String> profession,
@PathVariable Optional<String> grade

){ 
if(profession.isPresent() && grade.isPresent()) {
return accountService.filtreListUsers(profession.get(), grade.get());
}
if(region.isPresent()  && profession.isPresent() ) {
return accountService.filtreUsersByRegionProfession(region.get(), profession.get());
}
if(region.isPresent()  && grade.isPresent()) {
return accountService.filtreUsersByRegionGrade(region.get(), grade.get());
}   
return accountService.listUsers();
}

我参加的结果应该是这样的:http://localhost: 8084/用户/地区/年级:应该给出两个变量

的用户列表http://localhost: 8084/用户/区域/行业:应该给出两个变量

的用户列表Thanks for advance.

您的端点冲突。我建议你使用查询参数来过滤非路径变量。

@GetMapping("/users")
public List<AppUser> filtreListUsers(
@RequestParam Optional<String> region,
@RequestParam Optional<String> profession,
@RequestParam Optional<String> grade

){ 
if(profession.isPresent() && grade.isPresent()) {
return accountService.filtreListUsers(profession.get(), grade.get());
}
if(region.isPresent()  && profession.isPresent() ) {
return accountService.filtreUsersByRegionProfession(region.get(), profession.get());
}
if(region.isPresent()  && grade.isPresent()) {
return accountService.filtreUsersByRegionGrade(region.get(), grade.get());
}   
return accountService.listUsers();
}

一些可能的url

/users?grade=xyz&region=abc&profession=123
/users?grade=xyz&region=abc
/users?grade=xyz&profession=123
/users?region=abc&profession=123

相关内容

  • 没有找到相关文章

最新更新