ошибка при использовании моего собственного ввода с swagger 2 и spring boot 2

Я новичок в весенней загрузке и пытаюсь создать документацию для веб-приложения, над которым я работаю. Он работает достаточно хорошо, когда моим конечным точкам требуются только строки, список или другие базовые тела запроса, но всякий раз, когда я использую настраиваемые входные данные, я получаю эту ошибку: не удалось разрешить ссылку из-за того, что не удалось разрешить указатель, не существует в документе ошибка

Я создал небольшой проект с одной конечной точкой, чтобы упростить поиск. Это мои зависимости от чванства:

compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2'
compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2'

Вот конфигурация чванства:

@Configuration
@EnableSwagger2
class SwaggerConfig {

    @Bean
    Docket productApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("io.example.bss.testswagger"))
                .paths(any())
                .build()
                .apiInfo(metaInfo())
    }
    private ApiInfo metaInfo() {
        ApiInfo apiInfo = new ApiInfo(

            "API",
            "A description",
            "0.0.1",
            "urn:tos",
            new Contact("someone", "https://www.google.com",
                    "[email protected]"),
            "",
            "",
            new ArrayList<VendorExtension>()
        )
        return apiInfo
    }
}

Тогда есть контроллер:

@Controller
class ControllerHello {

    @PostMapping("/")
    def hello(@RequestBody Profile profile){
        return "hello $profile.name $profile.surname, I see you're $profile.age years old"
    }
}

И наконец, DTO:

@ApiModel(value = "the profile containing the name surname and age of a person")
@Document
class Profile {
    @ApiModelProperty(notes = "the name of the person", required = true)
    String name
    @ApiModelProperty(notes = "the surname of the person", required = true)
    String surname
    @ApiModelProperty(notes = "the age of the person", required = true)
    int age
}

В аналогичном посте кому-то посоветовали использовать alternateTypeRules в Docket, но я не уверен, что это сработает для моей проблемы, и я не знаю, как его настроить.


person oska alla    schedule 12.09.2018    source источник


Ответы (1)


Оказывается, у swagger-ui были проблемы, потому что мой класс Profile был написан на Groovy и учитывал метакласс при отображении модели. Проблема была решена добавлением этой строки .ignoredParameterTypes(groovy.lang.MetaClass.class) вот так:

@Bean
Docket productApi() {
    return new Docket(DocumentationType.SWAGGER_2)
            .select()
            .apis(RequestHandlerSelectors.basePackage("io.example.bss.testswagger"))
            .paths(any())
            .build()
            .apiInfo(metaInfo())
            .ignoredParameterTypes(groovy.lang.MetaClass.class)
}

Это мой источник: https://github.com/springfox/springfox/issues/752

person oska alla    schedule 13.09.2018