728x90
반응형
≣ 목차
Swagger UI
⚠️ Spring Boot 3.x.x 버전 이상 설정
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 |
댓글