Post

๐Ÿ’ฅ Swagger ํด๋ž˜์Šค๋ช… ์ค‘๋ณต

๐Ÿ’ฅ Swagger ํด๋ž˜์Šค๋ช… ์ค‘๋ณต

๋ฌธ์ œ ์ƒํ™ฉ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/* NoticeRequestDto$CREATE */
@Schema(description = "๊ณต์ง€์‚ฌํ•ญ ์š”์ฒญ DTO")
class NoticeRequestDto {
	@Schema(description = "๊ณต์ง€์‚ฌํ•ญ ๋“ฑ๋ก ์š”์ฒญ")
	class CREATE (
		@Schema(description = "์ œ๋ชฉ")
		val title: String,
		
		@Schema(description = "๋‚ด์šฉ")
		val content: String,
		
		@Schema(description = "์ž‘์„ฑ์ž ์ด๋ฉ”์ผ")
		val writerEmail: String
	)
}

/*ย InquiryRequestDto$CREATE */
@Schema(description = "๋ฌธ์˜ ์š”์ฒญ DTO")
class InquiryRequestDto {
	@Schema(description = "๋ฌธ์˜ ๋“ฑ๋ก ์š”์ฒญ")
	class CREATE (
		@Schema(description = "์ œ๋ชฉ")
		val title: String,
		
		@Schema(description = "๋‚ด์šฉ")
		val content: String,
		
		@Schema(description = "์ž‘์„ฑ์ž ์ด๋ฉ”์ผ")
		val writerEmail: String,
		
		@Schema(description = "์ž‘์„ฑ์ž ์ „ํ™”๋ฒˆํ˜ธ")
		val writerPhoneNumber: String? = null
	)
}
  • Swagger UI์—์„œ ๊ณต์ง€์‚ฌํ•ญ ์š”์ฒญ DTO๊ฐ€ InquiryRequestDto$CREATE์™€ ์ž˜๋ชป ๋งคํ•‘ ๋˜์—ˆ๋‹ค.

๋ฌธ์ œ ์›์ธ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
NoticeRequestDto.class
โ”œโ”€โ”€ CREATE.class
โ”œโ”€โ”€ READ.class
โ”œโ”€โ”€ UPDATE.class
โ””โ”€โ”€ DELETE.class

InquiryRequestDto.class
โ”œโ”€โ”€ CREATE.class
โ”œโ”€โ”€ READ.class
โ”œโ”€โ”€ UPDATE.class
โ””โ”€โ”€ DELETE.class

UserRequestDto.class
โ”œโ”€โ”€ CREATE.class
โ”œโ”€โ”€ READ.class
โ”œโ”€โ”€ UPDATE.class
โ””โ”€โ”€ DELETE.class
  • ํ•„์ž์˜ ์š”์ฒญ DTO ๊ตฌ์กฐ์ธ๋ฐ, Swagger์—์„œ๋Š” ํŒจํ‚ค์ง€ ์ •๋ณด๋Š” ๊ด€๋ฆฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— Nested Class ๋ช…์ด ์ค‘๋ณต๋  ๊ฒฝ์šฐ ๋งคํ•‘์ด ์ œ๋Œ€๋กœ ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

โœ… @Schema ์„ ์–ธ ์‹œ name ์ง€์ •

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Schema(
	name = "createNoticeDto",
	description = "๊ณต์ง€์‚ฌํ•ญ ๋“ฑ๋ก ์š”์ฒญ"
)
class CREATE (
	@Schema(description = "์ œ๋ชฉ")
	val title: String,
	
	@Schema(description = "๋‚ด์šฉ")
	val content: String,
	
	@Schema(description = "์ž‘์„ฑ์ž ์ด๋ฉ”์ผ")
	val writerEmail: String
)
  • name ๊ฐ’์€ ๋‹ค๋ฅธ ํด๋ž˜์Šค์™€ ๊ฒน์น˜๋ฉด ์•ˆ ๋œ๋‹ค.ย 

โœ… application.properties ์„ค์ •

1
springdoc.use-fqn=true
  • ํด๋ž˜์Šค๋ฅผ ํŒจํ‚ค์ง€๋กœ ๊ตฌ๋ถ„ํ•˜๋„๋ก ํ•˜๋Š” ์„ค์ •์ด๋ผ๊ณ  ํ•œ๋‹ค.

ํšŒ๊ณ 

  • ์•„์ง์€ Nested Class ๊ธฐ๋ฐ˜์˜ ์š”์ฒญ DTO ๊ตฌ์กฐ๊ฐ€ ๊ฐ€๋…์„ฑ ์ธก๋ฉด์—์„œ ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๋‹ค๋ฅธ ๋ฐฉํ–ฅ๋„ ์ƒ๊ฐํ•ด๋ด์•ผ๊ฒ ๋‹ค๊ณ  ๋А๊ผˆ๋‹ค.
This post is licensed under CC BY 4.0 by the author.