#java #spring #rest
#java #spring #rest
Вопрос:
Я пытаюсь использовать несколько необязательных переменных пути в Spring, как это /country/region/city/Chicago/street
или /country/USA/region/Indiana/city/street/
, и я хочу использовать только один метод для этого, например
@GetMapping(value = "/country/{country}/region/{region}/city/{city}/street/{street}")
public Street getStreet(@PathVariable String country,
@PathVariable String region,
@PathVariable String city,
@PathVariable String street) {
return new Street ();
}
но если я хочу использовать несколько переменных пути, я должен использовать всю комбинацию значений аннотации @GetMapping, например
@GetMapping(value = {
"/country/{country}/region/{region}/city/{city}/street/{street}",
"/country/region/{region}/city/{city}/street/{street}",
"/country/{country}/region/city/{city}/street/{street}",
/*
intermediate combinations
*/
"/country/region/city/street/",
})
public Street getStreet(@PathVariable(required = false) String country,
@PathVariable(required = false) String region,
@PathVariable(required = false) String city,
@PathVariable(required = false) String street) {
return new Street ();
}
Как я могу уменьшить количество комбинаций? Возможно, лучшим способом было бы использовать @RequestParam, но я должен использовать @PathVariable
Комментарии:
1. Похоже, вместо этого вы могли бы поиграть со строкой запроса, например
GET /street?country=...amp;region=...
.2. По какой причине вы должны использовать переменные пути для этого?
3. Поскольку
/country/region/city/street/
это другой путь, чем/country/{country}/region/city/street/
, вы должны указать его отдельно.4. Для чего нужны параметры запроса.