๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋ฐ˜์‘ํ˜•

์‹œ์ž‘ํ•˜๊ธฐ ์ „

Spring Boot ํ”„๋กœ์ ํŠธ์—์„œ API ๋ฌธ์„œ๋ฅผ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” Swagger UI๋Š” ๊ฐœ๋ฐœ ํ˜‘์—…๊ณผ ํ…Œ์ŠคํŠธ์— ํฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.
์ €๋Š” Maven ํ™˜๊ฒฝ์—์„œ springdoc-openapi๋ฅผ ์ ์šฉํ•œ ๊ณผ์ •์„ ์ •๋ฆฌํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

1. pom.xml ์„ค์ •

<dependencies> ... </dependencies> ์•ˆ์— Swagger ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

<dependencies>
...
</dependencies> ์•„๋ž˜์—

<!-- # ์ค‘์•™ ์ €์žฅ์†Œ(repository) ๋ช…์‹œ์ ์œผ๋กœ ์ถ”๊ฐ€ -->
	<repositories>
		<repository>
			<id>central</id>
			<name>Maven Central Repository</name>
			<url>https://repo1.maven.org/maven2</url>
		</repository>
	</repositories>

๋งŒ์•ฝ dependency not found ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด,
์ค‘์•™ ์ €์žฅ์†Œ(repository)๋ฅผ ๋ชป ์ฐพ๋Š” ๊ฒฝ์šฐ์ด๋ฏ€๋กœ ์œ„ repositories ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•œ ๋’ค Maven Reload๋ฅผ ํ•ด์ฃผ๋ฉด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

<!-- # Swagger (springdoc-openapi-ui) -->
<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.3.0</version>
</dependency>

 

2. application.properties ์ถ”๊ฐ€

# Swagger UI
springdoc.api-docs.path=/v3/api-docs
springdoc.swagger-ui.path=/swagger-ui.html

 

๊ธฐ๋ณธ path๋Š” ์›ํ•˜๋Š” ๋Œ€๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ €๋Š” swagger-ui.html๋กœ ์ง€์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—, ์•„๋ž˜ ์ฃผ์†Œ๋กœ ์ ‘์†ํ•˜๋ฉด Swagger UI ํ™”๋ฉด์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

 


Swagger UI ํ™œ์šฉํ•˜๊ธฐ

์ •์ƒ์ ์œผ๋กœ ์ ‘์†ํ•˜๋ฉด, API๊ฐ€ ์ž๋™์œผ๋กœ ๋ฌธ์„œํ™”๋œ ํ™”๋ฉด์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

 

 

API ์„ค๋ช…์€ Controller ์ฝ”๋“œ์— @Operation ์–ด๋…ธํ…Œ์ด์…˜์„ ํ™œ์šฉํ•ด์„œ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@Operation(summary = "์œ ์ € ์—…๋ฐ์ดํŠธ", description = "์œ ์ € ์ •๋ณด๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.")
@PostMapping("/update")
public ResponseEntity<UserDTO> updateUser(@RequestBody UserDTO dto) {
    ...
}

์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•˜๋ฉด Swagger UI์— **์ œ๋ชฉ(summary) + ์„ค๋ช…(description)**์ด ํ•จ๊ป˜ ํ‘œ์‹œ๋˜์–ด, ํ˜‘์—… ์‹œ์— ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

 


Try it out ๋ฒ„ํŠผ
์„ ๋ˆ„๋ฅด๋ฉด ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง์ ‘ API ์š”์ฒญ์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

Maven ํ™˜๊ฒฝ์—์„œ๋„ springdoc-openapi ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งŒ ์ถ”๊ฐ€ํ•˜๋ฉด ์†์‰ฝ๊ฒŒ Swagger UI๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
API ํ…Œ์ŠคํŠธ, ํ˜‘์—…, ๋ฌธ์„œํ™”๋ฅผ ํ•œ ๋ฒˆ์— ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ๊ผญ ๋„์ž…ํ•ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•