web-dev-qa-db-fra.com

Paramètres Spring + Springfox + Header

@RequestMapping(...)
public Foo getFoo(@HeaderParam("header") final String header) {
    ...
}

Ajout d'un @HeaderParam paramètre de méthode comme ci-dessus Springfox le prend et quand je regarde le swagger-ui il a un champ pour l'en-tête. C'est exactement ce que je veux. Existe-t-il un moyen de dire à springfox d'inclure ce paramètre d'en-tête sur un ensemble de méthodes sans avoir à inclure les paramètres sur la méthode elle-même? Ce que nous avons vraiment, c'est un filtre de servlet qui utilise l'en-tête et nous aimerions qu'il soit facile de le définir via swagger-ui.

28
Jay Anderson

Vous pouvez utiliser le globalOperationParameters dans la définition du dossier. Par exemple.

new Docket(...)
            .globalOperationParameters(
        Arrays.asList(new ParameterBuilder()
            .name("header")
            .description("Description of header")
            .modelRef(new ModelRef("string"))
            .parameterType("header")
            .required(true)
            .build()))

Voir # 22 dans la documentation pour plus d'informations.

60
Dilip Krishnan

Une autre réponse expliquée pour la même chose: -

@Bean
    public Docket api() {
        //Adding Header
        ParameterBuilder aParameterBuilder = new ParameterBuilder();
        aParameterBuilder.name("headerName").modelRef(new ModelRef("string")).parameterType("header").required(true).build();
        List<Parameter> aParameters = new ArrayList<Parameter>();
        aParameters.add(aParameterBuilder.build());
        return new Docket(DocumentationType.SWAGGER_2).select()
                .apis(RequestHandlerSelectors.any()).paths(PathSelectors.any()).build().apiInfo(apiInfo()).pathMapping("").globalOperationParameters(aParameters);
    }
14
Vijay Gupta