본문 바로가기
Develop/Feature

Swagger UI 사용

by 코젼 2024. 6. 12.
728x90
반응형

목차

     

    Swagger UI

    ⚠️ Spring Boot 3.x.x 버전 이상 설정

    https://springdoc.org/

     

    OpenAPI 3 Library for spring-boot

    Library for OpenAPI 3 with spring boot projects. Is based on swagger-ui, to display the OpenAPI description.Generates automatically the OpenAPI file.

    springdoc.org

     

    접속 url

    http://localhost:8080/swagger-ui/index.html

     

    Gradle 의존성 추가

    implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.5.0'

     

    SwaggerConfig 설정

    예시

      @Bean
      public OpenAPI springShopOpenAPI() {
          return new OpenAPI()
                  .info(new Info().title("SpringShop API")
                  .description("Spring shop sample application")
                  .version("v0.0.1")
                  .license(new License().name("Apache 2.0").url("http://springdoc.org")))
                  .externalDocs(new ExternalDocumentation()
                  .description("SpringShop Wiki Documentation")
                  .url("https://springshop.wiki.github.org/docs"));
      }

    작성

    package report.post.Configuration;
    
    import io.swagger.v3.oas.models.Components;
    import io.swagger.v3.oas.models.OpenAPI;
    import io.swagger.v3.oas.models.info.Info;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class SwaggerConfig {
    
        @Bean
        public OpenAPI openAPI() {
            return new OpenAPI()
                    .info(new Info().title("Posting REST API Specifications")
                            .description("게시글 CRUD")
                            .version("v0.0.1"))
                    .components(new Components());
        }
    }

    controller

    package report.post.controller;
    
    import io.swagger.v3.oas.annotations.Operation;
    import io.swagger.v3.oas.annotations.media.Content;
    import io.swagger.v3.oas.annotations.media.Schema;
    import io.swagger.v3.oas.annotations.responses.ApiResponse;
    import io.swagger.v3.oas.annotations.responses.ApiResponses;
    import io.swagger.v3.oas.annotations.tags.Tag;
    import lombok.RequiredArgsConstructor;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    import report.post.domain.Post;
    import report.post.service.PostService;
    
    import java.util.List;
    
    @Tag(name = "Post", description = "게시물 관련 API")
    @RestController
    @RequiredArgsConstructor
    @RequestMapping("/api/post")
    public class PostController {
    
        private final PostService postService;
    
        @GetMapping("/all")
        @Operation(
                summary = "모든 게시물 조회",
                description = "모든 게시물을 조회합니다."
        )
        @ApiResponses(
                value = {
                        @ApiResponse(responseCode = "200", description = "Success",
                            content = {@Content(schema = @Schema(implementation = List.class))}),
                        @ApiResponse(responseCode = "404", description = "Not found"),
                }
        )
        public List<Post> all() {
            return postService.all();
        }
    }

    728x90
    반응형

    'Develop > Feature' 카테고리의 다른 글

    [Docker] Database docker-compose 구축(mysql, redis)  (0) 2024.07.22
    Filter, Interceptor  (0) 2024.07.16
    Mac Node.js 설치  (0) 2024.06.24
    Layered Architecture 구조, API 적용하기  (0) 2024.05.28
    Apache 아파치 http 서버 설치  (0) 2024.03.22

    댓글