๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŒพBackEnd/๐ŸŒฑ Spring

[ Swagger ] Swagger UI๋ฅผ ํ†ตํ•ด API ๋ช…์„ธ์„œ Postman ๊ณต์œ 

by MuGeon Kim 2023. 4. 21.
๋ฐ˜์‘ํ˜•

 

1. ๊ธ€์„ ์ž‘์„ฑํ•œ ์ด์œ 

ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ API ์ŠคํŽ™์„ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ๋ณดํ†ต API ๋ฌธ์„œํ™”๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Rest DOCS์™€ Swagger๋ฅผ ํ†ตํ•ด์„œ API๋ฅผ ๋ฌธ์„œํ™”๋ฅผ ํ–ˆ๋‹ค.

์ €ํฌ๋Š” Swagger๋ฅผ ์„ ํƒ์„ ํ•˜์˜€๊ณ  ๋ฌธ์„œํ™”๋ฅผ ํ•˜์˜€์œผ๋‚˜ ๋ฌธ์„œํ™”๋ฅผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ฐฉ๋ฒ•์„ ์ฐพ๋˜ ๋„์ค‘์— ๋ฐฐํฌ๋ฅผ ํ•˜์ง€ ์•Š๊ณ  Postman์œผ๋กœ ๋ฌธ์„œ ๊ณต์œ ํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜์—ฌ ๊ธ€์„ ์ž‘์„ฑ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

2. Swagger UI ์ ์šฉํ•˜๊ธฐ 

์ฒ˜์Œ์— Gradle์— ์˜์กด์„ฑ์„ ์ถ”๊ฐ€๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

    implementation 'org.springdoc:springdoc-openapi-ui:1.6.9'

 

์ดํ›„ Config์ž‘์—…์„ ํ•ฉ๋‹ˆ๋‹ค.

@Configuration
public class OpenApiConfig {
    @Bean
    public OpenAPI openAPI() {

        Info info = new Info()
                .version("v1.0.0")
                .title("์Šคํ„ฐ๋”” ํƒ€์ž„ API ๋ช…์„ธ์„œ")
                .description("StudyTime API Description");

        return new OpenAPI()
                .info(info);
    }
}

์ด ๋ถ€๋ถ„์—์„œ ๋ฒ„์ „๊ณผ title, description์ด ์žˆ๋Š”๋ฐ swagger์— ์ œ๋ชฉ๊ณผ ์„ค๋ช…์„ ์ž‘์„ฑํ•˜๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ์— ์‚ฌ์šฉ์ž์— ๋งž๊ฒŒ ์„ค์ •์„ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

์ดํ›„ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰์„ ์‹œํ‚จ๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ URL์„ ์ž…๋ ฅํ•œ๋‹ค.

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

๊ทธ๋Ÿฌ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ™”๋ฉด์ด ๋‚˜์˜ต๋‹ˆ๋‹ค.

์œ„ ์‚ฌ์ง„์€ ์ปค์Šคํ…€์„ ํ•œ ํ™”๋ฉด์ž…๋‹ˆ๋‹ค.

์œ„์— Config์„ค์ •์„ ๋ณด๋ฉด Title๊ณผ Version, Description์ด ์ •ํ™•ํ•˜๊ฒŒ ๋ณ€๊ฒฝ๋œ ํ™”๋ฉด์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ผ๋‹จ ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์ •๋งŒ ํ•˜์˜€๋‹ค๋ฉด ๋ฐ‘์— API๋Š” ์˜์–ด๋กœ ๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ ์„ค์ •์ด ๋˜์–ด์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์ปค์Šคํ…€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

3. Swagger ์–ด๋…ธํ…Œ์ด์…˜ ์„ค์ •


1. Tag

@Tag(name = "user", description = "์‚ฌ์šฉ์ž API")
@RequestMapping(value = "${demo.api}/users")
@RestController
public class UserController

name: ํƒœ๊ทธ์˜ ์ด๋ฆ„

description: ํƒœ๊ทธ์— ๋Œ€ํ•œ ์„ค๋ช…

 

2. Schema

description : ํ•œ๊ธ€๋ช…
defaultValue : ๊ธฐ๋ณธ๊ฐ’
allowableValues :

 

3. Operation

summary : api์— ๋Œ€ํ•œ ๊ฐ„๋žต ์„ค๋ช…
description : api์— ๋Œ€ํ•œ ์ƒ์„ธ ์„ค๋ช…
responses : api Response ๋ฆฌ์ŠคํŠธ
parameters : api ํŒŒ๋ผ๋ฏธํ„ฐ ๋ฆฌ์ŠคํŠธ

 

4. ApiResponse

responseCode : http ์ƒํƒœ์ฝ”๋“œ
description : response์— ๋Œ€ํ•œ ์„ค๋ช…
content : Response payload ๊ตฌ์กฐ
schema : payload์—์„œ ์ด์šฉํ•˜๋Š” Schema
hidden : Schema ์ˆจ๊น€์—ฌ๋ถ€
implementation : Schema ๋Œ€์ƒ ํด๋ž˜์Šค

 

5. Parameter

name : ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„
description : ํŒŒ๋ผ๋ฏธํ„ฐ ์„ค๋ช…
in : ํŒŒ๋ผ๋ฏธํ„ฐ ์œ„์น˜
query, header, path, cookie

 

 

 

4. Postman์œผ๋กœ ์„ค์ •ํ•˜๊ธฐ


์ด ํ™”๋ฉด์—์„œ API๋ฅผ JSON์œผ๋กœ Exportํ•˜๋Š” ๋ฒ„ํŠผ์„ ํด๋ฆฐํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด JSON์œผ๋กœ ๋ณ€ํ™˜์ด ๋˜๋Š”๋ฐ ์ด๊ฑธ ๋ณต์‚ฌํ•ด์„œ Postman์— impot๋ฅผ ํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

์ดํ›„ ๋ณต์‚ฌํ•œ JSONํŒŒ์ผ์„ ๋ถ™์—ฌ๋„ฃ๊ณ  Public์„ ํ†ตํ•ด ๊ณต๊ฐœ์ ์œผ๋กœ ์„ค์ •์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ 


 

[Spring Boot Tutorial] 15. Open API 3.0 + Swagger v3 ์ƒ์„ธ์„ค์ •

api ๊ทธ๋ฃน ์„ค์ • : @Tag api Schema ์„ค์ • : @Schema api ์ƒ์„ธ ์ •๋ณด ์„ค์ • : @Operation api response ์„ค์ • : @ApiResponse api parameter ์„ค์ • : @Parameter ์ด์ „์‹œ๊ฐ„์— OpenAPI info ์ •๋ณด๋งŒ ์„ค์ •ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. Schemas ์— ๋Œ€ํ•œ ์„ค๋ช…๊ณผ ๋“ค

blog.jiniworld.me

 

 

Swagger์—์„œ Postman์œผ๋กœ Exportํ•˜๊ธฐ - Blog

 

codecamper.me

 

 

[Spring Data JPA Tutorial] 14. Swagger v3 ์ƒ์„ธ์„ค์ • ๋ฐ request ์œ ํšจ์„ฑ ๊ฒ€์ฆ

ํ•„์š”์„ฑ OpenAPI doc ๊ด€๋ จ Annotation operation ๊ทธ๋ฃน ์„ค์ •: @Tag Schema ์„ค์ • : @Schema ์ƒ์„ธ ์ •๋ณด ์„ค์ • : @Operation response ์„ค์ • : @ApiResponse parameter ์„ค์ • : @Parameter ๊ธฐ์กด api์— ์ ์šฉํ•˜๊ธฐ @Tag ์„ค์ • @Schema ๋ฐ ์œ ํšจ์„ฑ ๊ฒ€์ฆ

blog.jiniworld.me

 

๋ฐ˜์‘ํ˜•