web-dev-qa-db-ja.com

SpringFox Swagger-モデルのオプションフィールドと必須フィールド

Spring Bootアプリの残りのドキュメントにはSpringFoxライブラリを使用しました。 modelをクリックすると、すべての要素がオプションとして返されます。必須要素を必須として表示する方法はありますか?追加する必要がある追加の構成はありますか?

11
Punter Vicky

デフォルトではいすべてのフィールドはオプションになります。フィールドを必須としてマークするには、次の注釈を使用できます。

@ApiModelProperty(required = true)

必要なフィールドのゲッターメソッド。これはフィールドを「必須」として表示しません。ただし、ドキュメントでは、このフィールドのオプションタグは削除されます。

お役に立てれば。

16
Ganesh

Swagger設定で同様のコードを試してください。

_    @Bean
public Docket api() {

    List<ResponseMessage> list = new Java.util.ArrayList<>();
    list.add(new ResponseMessageBuilder().code(500).message("500 message")
            .responseModel(new ModelRef("JSONResult«string»")).build());
    list.add(new ResponseMessageBuilder().code(401).message("Unauthorized")
            .responseModel(new ModelRef("JSONResult«string»")).build());

    return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.any())
            .paths(PathSelectors.any()).build().securitySchemes(Collections.singletonList(securitySchema()))
            .securityContexts(Collections.singletonList(securityContext())).pathMapping("/")
            .directModelSubstitute(LocalDate.class, String.class).genericModelSubstitutes(ResponseEntity.class)
            .alternateTypeRules(newRule(
                    typeResolver.resolve(DeferredResult.class,
                    typeResolver.resolve(ResponseEntity.class, WildcardType.class)),
                    typeResolver.resolve(WildcardType.class)))
            .useDefaultResponseMessages(false).apiInfo(apiInfo()).globalResponseMessage(RequestMethod.GET, list)
            .globalResponseMessage(RequestMethod.POST, list);
}
_

そして、コントローラのマッピングで_@RequestBody @Valid MyRequestClass req_を追加します。たとえば、リクエストの本文でオブジェクトを渡す場合、パラメータを渡す場合は、@RequestParam(value = "email", required = true, defaultValue = "") String emailのようなものを追加します。

また、構成コードでジェネリック型のクラスを参照する方法、つまり_"JSONResult«string»"_を参照している_JSONResult<String>_を参照してください。

2
Hasson

Bean検証アノテーションのサポート、特にSpringfox v2.3.2の@ NotNull、@ Min、@ Max、および@Sizeのサポートが追加されました。

これらのアノテーションは、任意のAPIモデルに配置できます。

これを使用するには、springfox-bean-validators依存関係を追加します。

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-bean-validators</artifactId>
</dependency>

アプリケーションの構成クラスに追加します。

@Import({springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration.class})

参照: https://springfox.github.io/springfox/docs/current/#springfox-support-for-jsr-3

1
etech

私は同じ問題を抱えていましたが、@ etechのヒントを使用すると、必須フィールドがswaggerでマークされているのを確認できました。私が行ったのは、springfox-swagger.versionを2.9.2(2.4.0から)にアップグレードし、guava.versionを20.0(15から)にアップグレードし、さらにアプリケーション構成クラスでインポートしただけです。ありがとうございました。

1
marisa79