ошибка при использовании моего ввода с swagger 2 и пружинной загрузкой 2 - PullRequest
0 голосов
/ 12 сентября 2018

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

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

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",
                    "an.email@gmail.com"),
            "",
            "",
            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, но я не уверен, что он подойдет для моей проблемы, и я не знаю, как его настроить.

1 Ответ

0 голосов
/ 13 сентября 2018

Оказывается, что у 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

...