У меня проблема с генерируемыми заглушками, генерируемыми сваггером. У меня есть 2 услуги. Сначала предоставляется REST api с двумя методами с путем var и параметром запроса:
@GetMapping(value = "/start/{pathVar}/operators", params = "login")
public Operator getOperatorByLogin(
@ApiParam @PathVariable Long pathVar,
@ApiParam(required = true) @RequestParam String login) {
return operatorRepository.findDistinctByLogin(login);
}
и
@GetMapping(value = "/start/{pathVar}/operators", params = "ids")
public List<Operator> getOperatorsByIds(
@ApiParam @PathVariable Long pathVar,
@ApiParam( allowMultiple = true) @RequestParam List<Long> ids) {
return operatorRepository.findAllByOperatorIdIn(ids);
}
Существуют 2 конечные точки с одинаковыми URL-адресами, но с разными параметрами. Spring-Web Framework работает с этим. Затем я генерирую OpenApi json и получаю 2 пути:
"/start/{pathVar}/operators{?ids}": ...
"/start/{pathVar}/operators{?login}": ...
Затем я пытаюсь сгенерировать с помощью заглушек swagger-codegen-maven-plugin для этих конечных точек, а затем я сталкиваюсь с проблемой.
Исключение в потоке "main" java .lang.IllegalArgumentException: Карта не имеет значения для '? Login'
URL-адреса в этой форме жестко закодированы в сгенерированных классах.
(...)
final Map<String, Object> uriVariables = new HashMap<String, Object>();
uriVariables.put("pathVar", pathVar);
String path = UriComponentsBuilder.fromPath(
"/start/{pathVar}/opeartors{?login}").buildAndExpand(uriVariables).toUriString();
(...)
выдает исключение из-за отсутствия значения ключа карты входа в uriVariables.