@Configuration
public class OpenApiConfiguration {
@Bean
public OpenAPI openAPI() {
Info info = new Info()
.title("๋๋ด๋ค๋ฆฌ API Document")
.version("v1.0.0")
.description("๋๋ด๋ค๋ฆฌ ์๋ฒ API ๋ช ์ธ์์ ๋๋ค.");
return new OpenAPI()
.components(new Components())
.info(info);
}
๐ ์ด์ ์ค๋ช
API๊ฐ ๋ง์์ง๋ฉด์ POSTMAN์ผ๋ก ์ ๋ถ ํ ์คํธํด๋ณด๊ธฐ์ ๋ค์ ๋ถํธํ ์ฌํญ์ด ์์ ์ ์๋ค๊ณ ์๊ฐ๋์์ต๋๋ค! ๋ฐ๋ผ์ swagger๋ฅผ ๋์ ํ๋ ค๊ณ ํฉ๋๋ค.
Swagger ๊ธฐ๋ณธ ์ค์ ์ถ๊ฐ
@Bean public OpenAPI openAPI() { Info info = new Info() .title("๋๋ด๋ค๋ฆฌ API Document") .version("v1.0.0") .description("๋๋ด๋ค๋ฆฌ ์๋ฒ API ๋ช ์ธ์์ ๋๋ค."); return new OpenAPI() .components(new Components()) .info(info); }
@Bean public GroupedOpenApi allApi() { return GroupedOpenApi.builder() .group("all") .displayName("All API") .pathsToMatch("/**") .build(); }
@Bean public GroupedOpenApi adminApi() { return GroupedOpenApi.builder() .group("guardian") .displayName("Guardian API") .pathsToMatch("/v*/guardian/**") .build(); }
springdoc: api-docs: enabled: true # API ๋ฌธ์ํ ํ์ฑํ ์ฌ๋ถ path: /api-docs # OpenAPI ๋ฌธ์์ ๊ฒฝ๋ก๋ฅผ ์ค์ (๊ธฐ๋ณธ: /v3/api-docs) swagger-ui: path: /swagger-ui.html # Swagger UI ๊ฒฝ๋ก ์ค์ (๊ธฐ๋ณธ: /swagger-ui.html) operationsSorter: method # API ๋ชฉ๋ก์ ์ ๋ ฌํ๋ ๋ฐฉ์ (method๋ก ์ ๋ ฌ) display-request-duration: true # ์์ฒญ ์๊ฐ ํ์ defaultModelsExpandDepth: -1 # ๋ชจ๋ธ ํ์ฅ ๋ฐฉ์ง (Swagger UI์์ ๋ชจ๋ธ์ด ํผ์ณ์ง์ง ์์) tryItOutEnabled: true # Try it out ๋ฒํผ ํ์ฑํ (API ํ ์คํธ ๊ฐ๋ฅ) doc-expansion: none # Swagger UI์ ๊ธฐ๋ณธ ํ์ฅ ์ํ (none์ผ๋ก ์ค์ ์ ๋ชจ๋ ์ ํ ์ํ) deep-linking: true # URL์์ ํน์ ์๋ํฌ์ธํธ๋ก ๋ฐ๋ก ์ฐ๊ฒฐ ๊ฐ๋ฅ
โ๏ธ TODO