#java #spring #spring-boot #mapping
#java #spring #spring-boot #отображение
Вопрос:
У меня есть это приложение Spring, в котором я хочу получить значения из URL, например:
URL-адрес, отправляемый в приложение Spring, является www.example.com/app/account/register
. Как мне получить /register
часть после /account
, когда мой код выглядит следующим образом.
Для этого примера я использовал /register
но это может быть /login
, /something
также.
@RestController
@RequestMapping("/app")
public class MainController {
@RequestMapping(value = "/account")
public boolean AccountServer(@RequestHeader HttpHeaders httpHeaders, @RequestBody Map<String, String> payLoad){
return true;
}
}
Комментарии:
1. у вас могут быть другие методы контроллера, которые обрабатывают
/account/register
,/account/login
,/account/someting
и т.д..2. Да, но это то, чего я хочу избежать, потому что это будет микросервис, и часть / register должна быть отправлена в другую службу. Немного похоже на шлюз
Ответ №1:
Вы можете использовать @PathVariable
аннотацию для получения значения.
@RestController
@RequestMapping("/app")
public class MainController {
@RequestMapping(value = "/account/{operation}")
public boolean AccountServer(@RequestHeader HttpHeaders httpHeaders,
@RequestBody Map<String, String> payLoad,
@PathVariable("operation") String operation){
return true;
}
}
Ответ №2:
Используйте UriComponentsBuilder в качестве параметра, он будет введен Spring и инициализирован текущим URI. Затем вы можете преобразовать в UriComponents UriComponents для запроса пути.
@RestController
@RequestMapping("/app")
public class MainController {
@RequestMapping(value = "/account")
public boolean AccountServer(UriComponentsBuilder builder, @RequestHeader HttpHeaders httpHeaders, @RequestBody Map<String, String> payLoad){
List<String> pathSegments = builder.build().getPathSegments();
...
return true;
}
}