programing

SpringFox Swagger - 모델의 옵션 및 필수 필드

cafebook 2023. 7. 22. 10:24
반응형

SpringFox Swagger - 모델의 옵션 및 필수 필드

SpringFox 라이브러리를 사용하여 SpringBoot 앱의 rest 문서화를 수행했습니다.모델을 클릭하면 모든 요소가 옵션으로 반환됩니다.필수 요소를 필수로 표시하는 방법이 있습니까?추가해야 할 추가 구성이 있습니까?

예 기본적으로 모든 필드는 선택사항입니다.필드를 필요에 따라 표시하려면 다음 주석을 사용할 수 있습니다.

@ApiModelProperty(required = true)

필요한 필드의 getter 메서드입니다.필드가 "필수"로 표시되지 않습니다.그러나 설명서의 이 필드에 대한 선택적 태그는 제거됩니다.

이게 도움이 되길 바랍니다.

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-messages

스웨거 구성에서 유사한 코드를 사용해 보십시오.

    @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>

저도 같은 문제를 안고 있었지만 @etech 팁을 통해 필요한 필드가 스웨거로 표시된 것을 확인할 수 있었습니다.제가 한 일은 스프링 폭스 스웨거를 업그레이드한 것뿐입니다.버전을 2.9.2(2.4.0에서) 및 guava.version에서 20.0(15에서)으로 추가하고 애플리케이션 구성 클래스에서 가져오기를 수행합니다.감사해요.

언급URL : https://stackoverflow.com/questions/43771283/springfox-swagger-optional-and-mandatory-fields-in-model

반응형