Swagger не получает изменяемый путь

#java #spring #spring-boot #spring-mvc #swagger

Вопрос:

Я столкнулся с проблемой, используя Swagger и Spring Boot. У меня есть такой метод:

 @ApiOperation(value = "Returns product of specified id")
@GetMapping("/{id}")
private ProductInShop getProduct(@ApiParam(name = "Product id", value = "Id of the product you want to get") @PathVariable String id) {
        return productService.findById(id);
    }
 

Эта операция очень хорошо работает в Postman, и когда я вызываю GET метод по своему пути и указываю идентификатор, я получаю необходимый продукт. Но со свэггером это не работает. Я попытался выполнить отладку и заметил, что при этой операции идентификатор вызова '{id}' получает значение, а не идентификатор продукта. Как я могу решить эту проблему и сделать путь изменяемым, чтобы его можно было правильно выбрать?

Ответ №1:

Проблема может быть связана с @ApiParam name атрибутом: либо избавьтесь от него:

 @ApiOperation(value = "Returns product of specified id")
@GetMapping("/{id}")
private ProductInShop getProduct(@ApiParam(value = "Id of the product you want to get") @PathVariable String id) {
  return productService.findById(id);
}
 

Или укажите соответствующее значение:

 @ApiOperation(value = "Returns product of specified id")
@GetMapping("/{id}")
private ProductInShop getProduct(@ApiParam(name = "id", value = "Id of the product you want to get") @PathVariable String id) {
  return productService.findById(id);
}