programing

기존 Spring Boot App에서 OpenApi 3.0 사양을 생성하는 방법

abcjava 2023. 4. 6. 20:42
반응형

기존 Spring Boot App에서 OpenApi 3.0 사양을 생성하는 방법

프로젝트(Spring Boot App+Kotlin)가 있는데 Open API 3.0 사양(YAML이 바람직)을 희망하고 있습니다.Springfox 라이브러리는 좋지만 Swagger 2.0 JSON을 생성합니다.컨트롤러의 주석에서 Open API 3.0 사양을 생성하는 가장 좋은 방법은 무엇입니까?처음부터 쓰는 방법밖에 없나요?

당사는 kotlin 프로젝트에서 springdoc-openapi 라이브러리를 사용해 왔으며, 이는 spring boot 프로젝트를 사용하여 API 문서 생성을 자동화해야 하는 우리의 요구를 충족시킵니다.

swagger-ui를 스프링 부트 애플리케이션에 자동으로 도입합니다.

Swagger UI 페이지는 다음 URL에서 사용할 수 있습니다. - http://server:port/context-path/swagger-ui.html The OpenAPI 설명은 http://server:port/context-path/v3/api-docs 형식의 URL에서 확인할 수 있습니다.

프로젝트 의존성 목록에 라이브러리 추가(추가 구성 불필요)

 <dependency>
      <groupId>org.springdoc</groupId>
      <artifactId>springdoc-openapi-ui</artifactId>
      <version>1.2.32</version>
  </dependency>

spring-restdocsrestdocs-api-spec 를 참조해 주세요.

spring-restdocs는 API 문서에 대한 테스트 기반 접근 방식을 채택하고 있으며, 이는 spring-fox에서 사용하는 자기성찰 기반 접근 방식보다 많은 이점을 가지고 있습니다. restdocs-api-specapi API 、 spring - restdocs 。는 Open을 하고 있습니다.API2 "" 및 API3 체 api api 。

저는 독자적으로 발전기 https://github.com/jrcodeza/spring-openapi를 구현하기로 했습니다. 여러분도 확인해 보시기 바랍니다.반영을 기반으로 하며 javax 및 spring 주석을 지원합니다.또한 Jackson 주석을 기반으로 (판별자를 사용하여) 상속 모델을 생성합니다.또한 생성 프로세스를 변경하려는 경우(예: 자체 주석이 있고 스키마의 생성된 섹션을 조정해야 하는 경우) 자체 절편도 정의할 수 있습니다.런타임 모드 또는 메이븐 플러그인으로 사용할 수 있습니다.오픈도 있습니다.API3에서 Java 클라이언트 생성기로, openapi3 사양에서 모델을 생성합니다.또한 올바른 상속을 위해 Javax 주석과 Jackson 주석도 생성합니다.

jax-rs를 사용하는 경우 이 튜토리얼이 도움이 됩니다.Apache CXF 구현을 사용합니다.Spring Boot을 사용하고 Open API 3.0 사양을 생성하는 jaxrs의 다른 구현을 찾을 수 없었습니다.

다음과 같은 부서가 필요합니다.

<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-rs-service-description-openapi-v3</artifactId>
    <version>3.2.4</version>
</dependency>

<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>swagger-ui</artifactId>
    <version>3.13.6</version>
</dependency>

일반적인 설정은 다음과 같습니다.자세한 내용은 링크에 기재되어 있습니다.

@Configuration
@EnableAutoConfiguration
@ComponentScan(basePackageClasses = PeopleRestService.class)
public class AppConfig {
    @Autowired private PeopleRestService peopleRestService;
    @Bean(destroyMethod = "destroy")
    public Server jaxRsServer(Bus bus) {
        final JAXRSServerFactoryBean factory = new JAXRSServerFactoryBean();
        factory.setApplication(new JaxRsApiApplication());
        factory.setServiceBean(peopleRestService);
        factory.setProvider(new JacksonJsonProvider());
        factory.setFeatures(Arrays.asList(new OpenApiFeature()));
        factory.setBus(bus);
        factory.setAddress("/");
        return factory.create();
    }
    @Bean
    public ServletRegistrationBean cxfServlet() {
        final ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new CXFServlet(), "/api/*");
        servletRegistrationBean.setLoadOnStartup(1);
        return servletRegistrationBean;
    }
}

https://dzone.com/articles/moving-with-the-times-towards-openapi-v300-adoptio

Open 구현에 대한 튜토리얼을 제공하는 https://www.baeldung.com/spring-rest-openapi-documentation을 참조할 수도 있습니다.springdoc-openapi를 사용하는 SpringBoot 1.x 또는 2.x 응용 프로그램을 사용하는 API 3.0.

요약하자면, 어플리케이션에 springdoc-openapi의 maven 의존관계를 추가하고 bootRun을 실행할 때 경로http://server:port/v3/api-docs.yaml/로 이동하여 어플리케이션 코드에서 생성된 Open API 3.0 스펙 파일을 yaml로 다운로드합니다.

SpringBoot 응용 프로그램이 실행 중일 때 다음 항목에 액세스하여 springdoc-openapi를 사용하여 다른 작업을 수행할 수 있습니다.

언급URL : https://stackoverflow.com/questions/55938207/how-to-generate-openapi-3-0-spec-from-existing-spring-boot-app

반응형