본문 바로가기
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

댓글