πŸ“š μ•Œμ“Έμ½”μž‘ : μ•Œμ•„λ‘λ©΄ μ“Έλͺ¨μžˆλŠ” μ½”λ”© μž‘ν•™μ§€μ‹!


1️⃣ μ„œλ‘ 

ν”„λ‘ νŠΈμ—”λ“œ μ˜μ—­μ—μ„œ μ›Ήμ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•˜λ‹€ 보면 μ’…μ’… λ°±μ—”λ“œ APIμ™€μ˜ 톡신을 ν•„μš”λ‘œ ν•©λ‹ˆλ‹€. μ΄λ•Œ APIμ™€μ˜ 톡합 μž‘μ—…μ€ λ§Žμ€ μ‹œκ°„κ³Ό λ…Έλ ₯을 μš”κ΅¬ν•©λ‹ˆλ‹€.

특히 νƒ€μž…μŠ€ν¬λ¦½νŠΈλ₯Ό μ‚¬μš©ν•˜κ³  μžˆλ‹€λ©΄, ν•΄μ•Όν•  μž‘μ—…μ΄ 훨씬 λ§Žμ•„μ§€κ²Œ λ˜λŠ”λ°μš”. λ°±μ—”λ“œλ‘œ 데이터λ₯Ό μš”μ²­ν• λ•Œ μ–΄λ– ν•œ ν˜•νƒœλ‘œ 보내야할지, 데이터λ₯Ό λ°›μ„λ•Œ μ–΄λ– ν•œ ν˜•νƒœλ‘œ 받을지에 λŒ€ν•œ μΈν„°νŽ˜μ΄μŠ€ μ •μ˜κ°€ ν•„μš”ν•΄μ§€κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

μ΄λŸ¬ν•œ μž‘μ—…μ„ λ”μš± 효율적으둜 μˆ˜ν–‰ν•˜κ³  일관성 μžˆλŠ” μ½”λ“œλ₯Ό μœ μ§€ν•˜κΈ° μœ„ν•΄μ„œ OpenAPI Generator λ₯Ό ν™œμš©ν•˜λŠ” 방법이 μžˆμŠ΅λ‹ˆλ‹€.

μ§€κΈˆλΆ€ν„° OpenAPI Generator κ°€ 무엇인지 μ•Œμ•„λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.



2️⃣ OpenAPI generator

μ•žμ„  ν¬μŠ€νŒ…μ—μ„œ OpenAPI 와 OpenAPIλ₯Ό λ§Œλ“  OpenAPI Initiative에 λŒ€ν•΄μ„œ μ–ΈκΈ‰ν•œμ μ΄ μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

OpenAPI GeneratorλŠ” OpenAPI Initiative 에 μ˜ν•΄ μ‹œμž‘λœ ν”„λ‘œμ νŠΈμ€‘ ν•˜λ‚˜λ‘œμ„œ, Java둜 개발된 독립 μ‹€ν–‰ν˜• λ„κ΅¬μž…λ‹ˆλ‹€. 이 도ꡬλ₯Ό μ‚¬μš©ν•˜λ©΄ λ‹€μ–‘ν•œ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ‘œ μž‘μ„±λœ API ν΄λΌμ΄μ–ΈνŠΈ 라이브러리, μ„œλ²„ μŠ€μΌˆλ ˆν†€ μ½”λ“œ, 데이터 λͺ¨λΈ 등을 μžλ™μœΌλ‘œ 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.

OpenAPI GeneratorλŠ” 미리 μ •μ˜λœ Generator라 λΆˆλ¦¬λŠ” ν…œν”Œλ¦Ώκ³Ό μ½”λ“œ 생성기λ₯Ό μ‚¬μš©ν•˜μ—¬ OpenAPI μŠ€νŽ™μ„ λΆ„μ„ν•˜κ³  μ½”λ“œλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ μƒμ„±λœ μ½”λ“œλŠ” κ°œλ°œμžκ°€ API 호좜 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜κ±°λ‚˜ κ΅¬ν˜„ν•  λ•Œ 기반으둜 μ‚¬μš©λ©λ‹ˆλ‹€.

Geneartor μ’…λ₯˜μ— 따라 λ‹€μ–‘ν•œ output(Java, Kotlin, typescript, etc.)을 λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.

μ›Ή ν”„λ‘ νŠΈ μ—μ„œλŠ” typescript-axios λ‚˜ typescript-fetch λ₯Ό 주둜 μ‚¬μš©ν•©λ‹ˆλ‹€

μ›Ή ν”„λ‘ νŠΈμ—”λ“œ μ—μ„œλŠ” 주둜 typescript-axios λ‚˜ typescript-fetch λΌλŠ” generatorλ₯Ό ν™œμš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

κ·Έ μ΄μœ λŠ”, 이λ₯Ό 톡해 μžλ™μœΌλ‘œ μƒμ„±λœ API μΈν„°νŽ˜μ΄μŠ€μ™€ API 호좜 ν•¨μˆ˜λ₯Ό 톡해 λ°±μ—”λ“œμ™€ ν”„λ‘ νŠΈμ—”λ“œ κ°„μ˜ μ£Όκ³ λ°›λŠ” λ°μ΄ν„°λ“€μ˜ νƒ€μž…μ„ μœ μ§€ν• μˆ˜ 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€.


βœ… μš”μ•½

OpenAPI GeneratorλŠ” OpenAPI(Swagger) μŠ€νŽ™μ„ 기반으둜 API ν΄λΌμ΄μ–ΈνŠΈλ‚˜ μ„œλ²„ μ½”λ“œλ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•΄μ£ΌλŠ” λ„κ΅¬μž…λ‹ˆλ‹€.



3️⃣ OpenAPI generator cli

OpenAPI Generator CLI λŠ” OpenAPI Generator의 λͺ…λ Ή ν”„λ‘¬ν”„νŠΈ μΈν„°νŽ˜μ΄μŠ€(Command Line Interface μ΄ν•˜ CLI) λ²„μ „μž…λ‹ˆλ‹€. OpenAPI Generator CLIλ₯Ό μ‚¬μš©ν•˜λ©΄ ν„°λ―Έλ„μ΄λ‚˜ λͺ…λ Ή ν”„λ‘¬ν”„νŠΈμ—μ„œ CLIλͺ…λ Ήμ–΄λ₯Ό μž…λ ₯ν•˜μ—¬ OpenAPI generator λ₯Ό μ‹€ν–‰μ‹œμΌœ μ½”λ“œλ₯Ό μƒμ„±ν•˜λŠ” 것이 κ°€λŠ₯ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 κ°œλ°œμžλŠ” μžλ™ μ½”λ“œ 생성 κΈ°λŠ₯을 μ‰½κ²Œ μ‚¬μš©ν•  수 있으며, CI/CD νŒŒμ΄ν”„λΌμΈμ΄λ‚˜ 슀크립트 λ“±μ—μ„œλ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. OpenAPI Generator CLI λŠ” κ°œλ°œμžλ“€μ—κ²Œ 더 큰 μœ μ—°μ„±κ³Ό νŽΈμ˜μ„±μ„ μ œκ³΅ν•˜μ—¬ μ½”λ“œ 생성 및 관리 μž‘μ—…μ„ μžλ™ν™”ν•  수 있게 ν•΄μ€λ‹ˆλ‹€.



4️⃣ What is different?

β€œκ·Έλž˜μ„œ OpenAPI generator 와 OpenAPI generator cli κ°€ 뭔차인데?” 라고 μƒκ°ν•˜μ‹œλŠ” 뢄듀이 계싀것 κ°™μŠ΅λ‹ˆλ‹€.

이 λ‘˜μ˜ κ°€μž₯ 큰 차이점은 μ•žμ„œ μ„€λͺ…λœκ²ƒμ²˜λŸΌ ν•΄λ‹Ή 도ꡬ듀이 μ‚¬μš©λ˜λŠ” ν™˜κ²½μ— μžˆμŠ΅λ‹ˆλ‹€. OpenAPI generator λŠ” μžλ°”λ‘œ λ§Œλ“€μ–΄μ§„ λ…λ¦½μ μœΌλ‘œ μ‹€ν–‰κ°€λŠ₯ν•œ λ„κ΅¬μž…λ‹ˆλ‹€. 이 λ•Œλ¬Έμ— 일뢀 Node 와 같은 κ°œλ°œν™˜κ²½μ—μ„œ ν™œμš©μ΄ λΆˆκ°€λŠ₯ν•˜λ‹€λŠ” 단점이 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ OpenAPI-generator-cli λŠ” cli λͺ…λ Ήμ–΄λ₯Ό 톡해 OpenAPI generator λ₯Ό μ‹€ν–‰μ‹œν‚€λŠ” 것이 κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ— Node 와 같은 개발 ν™˜κ²½μ—μ„œλ„ OpenAPI μŠ€νŽ™ 을 ν†΅ν•œ μ½”λ“œμƒμ„± 및 ν™œμš©μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.

μœ„μ™€κ°™μ€ 이유둜, μ›Ή ν”„λ‘ νŠΈμ—”λ“œμ—μ„œλŠ” μ•„λž˜μ˜ λͺ…λ Ήμ–΄λ₯Ό 톡해 OpenAPI generator cli 와 OpenAPI generatorλ₯Ό μ„€μΉ˜ν•˜μ—¬ κ°œλ°œμ— ν™œμš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.


πŸ”½ OpenAPI generator install

brew install openapi-generator 

πŸ”½ OpenAPI generator cli install

yarn add -D @openapitools/openapi-generator-cli


5️⃣ TMI

μ•žμ„  ν¬μŠ€νŒ…μ—μ„œ OpenAPI λŠ” Swagger μŠ€νŒ©μœΌλ‘œλΆ€ν„° νŒŒμƒλ˜μ—ˆλ‹€κ³  말씀을 λ“œλ Έμ—ˆμŠ΅λ‹ˆλ‹€. λ•Œλ¬Έμ— 이미 λ°±μ—”λ“œμ—μ„œ Swaggerλ₯Ό μ‚¬μš©ν•˜μ—¬ API λ¬Έμ„œλ₯Ό μž‘μ„±ν•˜κ³  μžˆμ—ˆλ‹€λ©΄, Swagger에 μ˜ν•΄ μž‘μ„±λœ OASλ¬Έμ„œμ™€OpenAPI Generatorλ₯Ό μ΄μš©ν•΄ μ†μ‰½κ²Œ μ½”λ“œλ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 λ°±μ—”λ“œμ™€ ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμžλ“€μ€ μ΅œμ‹  API μŠ€νŽ™κ³Ό μΌκ΄€λœ μ½”λ“œλ₯Ό μœ μ§€ν•˜λ©΄μ„œ ν˜‘μ—…μ„ μ›ν™œν•˜κ²Œ μ§„ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.



πŸ”– 예고편

β€œν”„λ‘ νŠΈμ—”λ“œμ—μ„œ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ§Œλ“€λ•Œ 각쒅 μ˜΅μ…˜λ“€μ„ CLI λͺ…λ Ήμ–΄λ‘œ μ „λ‹¬ν•˜μ§€ μ•Šκ³  OpenAPI generator λ₯Ό 더 쉽고 잘 ν™œμš©ν•˜λŠ” 방법이 μ—†μ„κΉŒμš”?”

λ„€, μžˆμŠ΅λ‹ˆλ‹€. 심지어 맀번 openapi-generator λ₯Ό μ„€μΉ˜ν•˜μ§€ μ•Šμ•„λ„ λ˜λŠ” 방법이 μžˆμŠ΅λ‹ˆλ‹€!

λ°”λ‘œ κ°€μ‹œμ£ ! openapitools.json ν™œμš©νŽΈ!