У меня проблема с соответствующим отображением на конечные точки.Я хочу получить такой результат:
- Когда я иду на
/api/leagues/1
показывать лигу с id = 1, - Когда я иду на
/api/leagues/spain
Показывать лигу с страной = "Испания ", - Когда я иду на
/api/leagues/la liga
Показать лигу с leagueName =" la liga "
мой код такой:
@RestController
@RequestMapping("/api/leagues")
public class LeagueController {
@Autowired
private LeagueService leagueService;
@GetMapping("")
public List<League> getLeagues() {
return leagueService.getAllLeagues();
}
@GetMapping("/{id}")
public League getLeagueById(@PathVariable Long id) {
return leagueService.getLeagueById(id);
}
@GetMapping("/")
public League getLeagueByCountry(@RequestParam(value="country") String country) {
return leagueService.getLeagueByCountry(country);
}
@GetMapping("/")
public League getLeagueByLeagueName(@RequestParam(value="leagueName") String leagueName) {
return leagueService.getLeagueByLeagueName(leagueName);
}
}
Однакопри запуске я получаю следующее сообщение об ошибке:
Ambiguous mapping. Cannot map 'leagueController' method`
Когда я изменяю свой код следующим образом:
@RestController
@RequestMapping("/api/leagues")
public class LeagueController {
@Autowired
private LeagueService leagueService;
@GetMapping("")
public List<League> getLeagues() {
return leagueService.getAllLeagues();
}
@GetMapping("/{id}")
public League getLeagueById(@PathVariable Long id) {
return leagueService.getLeagueById(id);
}
@GetMapping("/")
public League getLeagueByCountry(@RequestParam(value="country") String country) {
return leagueService.getLeagueByCountry(country);
}
}
Это работает, но тогда я должен использовать следующую конечную точку:
/api/leagues?country=spain
Но я предпочитаю иметь эту конечную точку вместо:
/api/leagues/spain
Может кто-нибудь объяснить мне, как я могу решить проблему или помочь мне найти решение для отображения, которое я хочу?Я буду благодарен за это.