Аннотация Swagger @ApiParam делает параметр, аннотированный с помощью @PathVariable, необязательным в пользовательском интерфейсе Swagger

У меня есть следующий код, это искусство API моего

    import org.springframework.web.bind.annotation.PathVariable;
    import io.swagger.annotations.*;

    @GetMapping(value = "/{userId}")
        public String getUserHistory(ApiParam(value = "The user id") 
                    @PathVariable("userId") Integer userId, Model model) throws NotFoundException {
            // fetch user info
            model.addAttribute("userInfo", userInfo);
            return "userHistory";
        }

Если у меня есть аннотация @ApiParam, @PathVariable становится необязательной, поэтому, если я не введу userId и не сделаю запрос через пользовательский интерфейс Swagger, запрос по-прежнему отправляется на сервер, что вызывает ненужные ошибки сервера. Параметр «required» в @PathVariable по умолчанию равен true (поэтому по умолчанию используется @PathVariable (name = "userId", required = true)) и отлично работает без @ApiParam для этого самого параметра. Насколько я понимаю, эти аннотации не должны менять поведение друг друга. Это ошибка Swagger или просто неправильное использование?

Версия Swagger?

lealceldeiro 30.10.2018 15:51
из этого звучит действительно глупо, не так ли? > Также не забудьте добавить required: true, потому что параметры пути требуются всегда.
buræquete 30.10.2018 15:51

@lealceldeiro 2.7.0

lopushen 30.10.2018 16:30
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
10 485
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Параметр «required» в @ApiParam по умолчанию равен false, поэтому вам просто нужно изменить его на true, чтобы он требовался через пользовательский интерфейс Swagger.

@ApiParam(value = "The user id", required = true) @PathVariable("userId") Integer userId

Другие вопросы по теме