ํ์ฌ Apicurio์ ์ฐธ์กฐ ๊ฐ์ฒด ๋ ์ฌ์ฉ๋ ๋์ผํ ๋ฌธ์๋ง ๊ฐ๋ฆฌํฌ ์ ์์ต๋๋ค. ๋ค๋ฅธ ๋ฌธ์์์ ๊ตฌ์ฑ ์์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ ์ ์๋๋ก ๊ธฐ๋ฅ์ ๊ตฌํํ์ญ์์ค.
๊ณ ๋ ค ์ฌํญ:
์ ์ฌ/ํฌํจ๋ ๋ฌธ์ :
์ฌ์ฉ ์ฌ๋ก
์ด๊ฒ์ด ํด๊ฒฐ๋ ์ฃผ์ ์ฌ์ฉ ์ฌ๋ก๋ ์ฌ์ฉ์์๊ฒ ๋ฐ์ดํฐ ์ ํ ์ ์๋ฅผ ๋จ์ผ ํ์ผ(๋๋ ํ์ผ ์ธํธ)๋ก ์ค์ ์ง์คํํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด๋ฌํ ๋ฐ์ดํฐ ์ ํ์ ์ค์ ์์น๋ฅผ ์ฐธ์กฐํ์ฌ ์ฌ๋ฌ API ์ ์์์ ํ์ฉํ ์ ์์ต๋๋ค.
๊ณ ๋ ค ์ฌํญ
์ธ๋ถ ์ฐธ์กฐ๋ฅผ ์ง์ํ๋ ค๋ฉด ์ฌ๋ฌ ๊ฐ์ง ๊ฐ์ ์ฌํญ์ด ํ์ํฉ๋๋ค. ๋ค์์ ํน๋ณํ ์์๊ฐ ์๋ ๋ชฉ๋ก์ ๋๋ค.
๋ฐ์ดํฐ ๋ชจ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(ํ์ฌ oai-ts-core
์ด์ง๋ง ๊ณง apicurio-data-models
)๋ ํ๋ฌ๊ทธํ ์ฐธ์กฐ ํ์ธ์๋ฅผ ์ง์ํ๋๋ก ํฅ์๋์ด์ผ ํฉ๋๋ค. ํ์ฌ ์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ด๋ถ ์ฐธ์กฐ๋ง ํ์ธํ ์ ์์ต๋๋ค. ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์๋น์ ๋ ์ธ๋ถ ์ฐธ์กฐ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ํ์ธํ ์ ์๋๋ก ์ฌ์ฉ์ ์ง์ ์ฐธ์กฐ ํ์ธ์๋ฅผ ์ ๊ณตํ ์ ์์ด์ผ ํฉ๋๋ค.
Apicurio Studio๋ ๋ฐ์ดํฐ ์ ํ ์ค๊ณ์ ์ค์ ์ ๋ ํธ์ง๊ธฐ์ ํจ๊ป "๋ฐ์ดํฐ ์ ํ ์ ์ฉ" ์คํ์ผ ๋ฆฌ์์ค๋ฅผ ์ง์ํด์ผ ํฉ๋๋ค. ์ด๋ฅผ ํตํด API ๋์์ธ๊ณผ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐ์ดํฐ ์ ํ์ ์์ฑ/๊ด๋ฆฌํ๊ธฐ ์ํ ๋ณด๋ค ๊ตฌ์ฒด์ ์ธ ์ํฌํ๋ก๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
API ๋์์ธ ํธ์ง๊ธฐ์์ ์ ํ์ ์ค์ ํ ๋ ๋๊ตฌ๋ ์ธ๋ถ ๋ฆฌ์์ค์์ ์ ํ์ ์ ํํ๋ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค. ์ ํ์ ์ํด ์ด๋ฌํ ์ธ๋ถ ์ ํ์ ์ฌ์ฉ์์๊ฒ ๊ฐ์ฅ ์ ํ์ํ๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. API ๋์์ธ์ด ๋ค๋ฅธ ๋ฆฌ์์ค/ํ์ผ์ "๊ฐ์ ธ์ค๊ธฐ"ํ์ฌ UI๊ฐ ์ฌ์ฉ์์ ์ ํ ๋ฒ์๋ฅผ ์ขํ ํ๋ช ํ๊ฒ ํ์ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ํ์ํ ์ ์์ต๋๋ค. ํธ์ง๊ธฐ๋ ์ผ์ข ์ ์ ํ UI ์ปจํธ๋กค์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฐ์ดํฐ ์ ํ์ ํ์ํ๊ธฐ ์ํด ์ธ๋ถ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ ธ์ค๊ณ ๊ตฌ๋ฌธ ๋ถ์ํด์ผ ํฉ๋๋ค.
์งํ ์ค์ธ ๋ฐ์ดํฐ ์ ํ ๋ฆฌ์์ค๋ฅผ API ๋์์ธ์์ ์ธ๋ถ ์ฐธ์กฐ์ ์์ค๋ก ์ฌ์ฉํ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํด์ผ ํ ์๋ ์์ต๋๋ค. ์ฆ, API ๋์์ธ์์ "์ค๋ ์ท" ๋ฐ์ดํฐ ์ ํ์ ์ฐธ์กฐํ ์ ์์ด์ผ ํฉ๋๊น? ๋๋ ๋ฐ์ดํฐ ์ ํ ๋ฆฌ์์ค๊ฐ ์ธ๋ถ ์ฐธ์กฐ์ ์์ค๋ก ์ฌ์ฉ๋๊ธฐ ์ ์ "์ต์ข "์ด ๋์ด์ผ ํฉ๋๋ค. ์ ์์ ๊ฒฝ์ฐ ์ข ์์ฑ๋ ์๋ฃ๋ ๋๊น์ง API ๋์์ธ์ "์๋ฃ"ํ ์ ์์ต๋๋ค. ์ฐธ๊ณ : ์ด ์ ์ฒด ๊ฐ๋ ์ ์ฌ์ฉํ๋ ค๋ฉด Apicurio์์ ์ต์ข ๋ฆฌ์์ค๋ฅผ ๊ตฌํํด์ผ ํฉ๋๋ค!
Apicurio ๋ฆฌ์์ค๋ฅผ ์ฐธ์กฐํ ๋ $ref ํ์์ด ๋ฌด์์ธ์ง ๊ฒฐ์ ํด์ผ ํฉ๋๋ค. ํ์ฌ ๋ชจ๋ API ๋์์ธ(๋๋ ์ด๋ก ์ ์ธ ๋ฐ์ดํฐ ์ ํ ๋ฆฌ์์ค)์๋ ๊ณ ์ ID๊ฐ ์์ง๋ง ์์ฑ ์ ์์ฑ๋๋ ๋ถํฌ๋ช ID์ ๋๋ค. ํด๋น ID๋ ํ์ฌ ํด๊ฒฐ ๋ชฉ์ ์ผ๋ก ๋ฆฌ์์ค๋ฅผ ์๋ณํ๋ ์ ์ผํ ๊ณ ์ ํ ๋ฐฉ๋ฒ์ ๋๋ค. ๋ฆฌ์์ค๊ฐ ์๋ฃ๋๋ฉด(์ด๋ฌํ ๊ฐ๋ ์ ์ง์ํ๋ ๊ฒฝ์ฐ) ๋ฆฌ์์ค์ ๋ณด๋ค ์ธ๊ฐ ์นํ์ ์ธ ์๋ณ์๋ฅผ ๋ถ์ฌํ ๋ค์ $ref URI์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ๋ฌด์์ ํ๋ API ๋ ์ง์คํธ๋ฆฌ(๋ ๋ค๋ฅธ ๋ฏธ๋ ๊ธฐ๋ฅ)์ ๋ฆฌ์์ค๋ฅผ ๊ฒ์ํ ๋ API ๋์์ธ์ ๋ชจ๋ $references๋ API ๋ ์ง์คํธ๋ฆฌ์์ ํฉ๋ฆฌ์ ์ธ ๋ฐฉ์์ผ๋ก ํ์ธํ ์ ์์ด์ผ ํฉ๋๋ค.
๋ค์์ $ref
ํ์ฉ๋๋ ๊ฐ์ ๋ํ ๋ช ๊ฐ์ง ์ ๋ณด์
๋๋ค.
$ref์ ๊ฐ์ URI์ด์ง๋ง ๋คํธ์ํฌ ๋ก์ผ์ดํฐ๊ฐ ์๋๋ผ ์๋ณ์์ผ ๋ฟ์ ๋๋ค. ์ด๋ ์คํค๋ง๊ฐ ํด๋น URI์์ ์ก์ธ์คํ ์ ์์ด์ผ ํ๋ ๊ฒ์ ์๋์ง๋ง ์ก์ธ์คํ ์ ์์์ ์๋ฏธํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ๋ถ ์คํค๋ง URI๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ ํจ์ฑ ๊ฒ์ฌ๊ธฐ ๊ตฌํ์ ๋ฌ๋ ค ์์ง๋ง ์ ํจ์ฑ ๊ฒ์ฌ๊ธฐ๊ฐ $ref ๊ฐ์ ํ์๋ ๋คํธ์ํฌ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ ธ์ฌ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํด์๋ ์ ๋ฉ๋๋ค.
์ฐธ์กฐ์ ๋ํ ์์ธํ ๋ด์ฉ์ OpenAPI ์ฌ์ ๋ฐ JSON ์ฐธ์กฐ RFC ์์ ์ฐพ์ ์ ์์ต๋๋ค.
Apicurio ๋ด์ ๋ค๋ฅธ ์ฌ์์์ DataTypes์ ๋ํ ์ฐธ์กฐ ๊ตฌํ์ ์ฐ์ ์์๋ฅผ ์ง์ ํ ์ ์์ต๋๊น(์ฒ์์๋ ์ธ๋ถ ์ฐธ์กฐ๊ฐ ์๋๋ผ)?
๋ด๊ฐ ์ด๊ฒ์ ๋งํ๋ ์ด์ ๋ Swagger์ ์ฌ์ํ์ง ์์ ์ฌ์ฉ์ ์ผ๋ถ ์ํธ ์ฐธ์กฐ ๊ธฐ๋ฅ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฐ๋ฆฌ๋ ๋ฐ์ดํฐ ์ ํ(์: ์ฃผ์, ์ฌ๋ ๋ฑ)์ ๊ณต์ ํ๋ ๋ค์ํ ์๋น์ค๋ฅผ ๊ตฌํํ๊ณ ์์ผ๋ฉฐ ์ด๋ฌํ ๋ชจ๋ ์ฌ์์ Apicurio๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ํ์ฌ๋ก์๋ ์ํธ ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ํ ์ ์์ต๋๋ค.
Apicurio ๋ด์ ๋ค๋ฅธ ์ฌ์์์ DataTypes์ ๋ํ ์ฐธ์กฐ ๊ตฌํ์ ์ฐ์ ์์๋ฅผ ์ง์ ํ ์ ์์ต๋๊น(์ฒ์์๋ ์ธ๋ถ ์ฐธ์กฐ๊ฐ ์๋๋ผ)?
๋ด๊ฐ ์ด๊ฒ์ ๋งํ๋ ์ด์ ๋ Swagger์ ์ฌ์ํ์ง ์์ ์ฌ์ฉ์ ์ผ๋ถ ์ํธ ์ฐธ์กฐ ๊ธฐ๋ฅ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฐ๋ฆฌ๋ ๋ฐ์ดํฐ ์ ํ(์: ์ฃผ์, ์ฌ๋ ๋ฑ)์ ๊ณต์ ํ๋ ๋ค์ํ ์๋น์ค๋ฅผ ๊ตฌํํ๊ณ ์์ผ๋ฉฐ ์ด๋ฌํ ๋ชจ๋ ์ฌ์์ Apicurio๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ํ์ฌ๋ก์๋ ์ํธ ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ํ ์ ์์ต๋๋ค.
๋์ํฉ๋๋ค. ์ด๊ฒ์ ์ฐ๋ฆฌ๋ฅผ ํฌ๋ฌ ์ฑ ์์ญ์ผ๋ก ์ด๋ ๊ฒ์ ๋๋ค.
@jsenko ์ผ๋จ ๋ ์ง์คํธ๋ฆฌ impl์ ๋ง๋ฌด๋ฆฌํ๊ณ ๋๋ฉด ์ปค๋ฎค๋ํฐ์์ ๋ถ๋ช ํ ์ฐ์ ์์๋ฅผ ๊ฐ๊ฒ ๋๋ ๊ฒ ๊ฐ์ต๋๋ค. :)
์ง์ฅ์์ apicurio๋ฅผ ์ฌ์ฉํ๊ณ ์ฐธ๊ณ ์๋ฃ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค๋ฅธ ํ์ ๋งค์ฐ ์ ์ฉํ ๊ฒ์ ๋๋ค.
์๊ฐ์ด ์กฐ๊ธ ๊ฑธ๋ฆฌ๊ธด ํ์ง๋ง ์ธ๋ถ ์ฐธ์กฐ๋ ๋ค์ ๋ฆด๋ฆฌ์ค(๋ด์ผ ์๋ฃ๋ ์์ )์ธ ๋ฒ ํ 2.46๋ถํฐ ๊ณต์์ ์ผ๋ก ์ง์๋ ์์ ์ ๋๋ค. ๋ค๋ฅธ Apicurio Studio ๋ฌธ์์์ ํ์ฌ ๋ฌธ์๋ก ๋ฐ์ดํฐ ์ ํ ๋ฐ ์๋ต์ ๊ฐ์ ธ์ค๋ ์๋ก์ด UI๊ฐ ์์ต๋๋ค. ๋ํ ์ธ๋ถ http/s ๋ฐ Apicurio ๋ด๋ถ ์ฐธ์กฐ ํ์ธ์ ์ง์ํ๋๋ก ์ ํจ์ฑ ๊ฒ์ฌ๊ฐ ์ ๋ฐ์ดํธ๋์์ต๋๋ค. ์ด๊ฒ์ ๋ฌธ์ ์ ๋ฐ์ ๊ฑธ์น ์ฐธ์กฐ์ ๋ํ ์ฑ์ํ ์ง์์ ์ํ ์ข์ ์ฒซ ๋ฒ์งธ ๋จ๊ณ๊ฐ ๋์ด์ผ ํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๊ฐ์ด ์กฐ๊ธ ๊ฑธ๋ฆฌ๊ธด ํ์ง๋ง ์ธ๋ถ ์ฐธ์กฐ๋ ๋ค์ ๋ฆด๋ฆฌ์ค(๋ด์ผ ์๋ฃ๋ ์์ )์ธ ๋ฒ ํ 2.46๋ถํฐ ๊ณต์์ ์ผ๋ก ์ง์๋ ์์ ์ ๋๋ค. ๋ค๋ฅธ Apicurio Studio ๋ฌธ์์์ ํ์ฌ ๋ฌธ์๋ก ๋ฐ์ดํฐ ์ ํ ๋ฐ ์๋ต์ ๊ฐ์ ธ์ค๋ ์๋ก์ด UI๊ฐ ์์ต๋๋ค. ๋ํ ์ธ๋ถ http/s ๋ฐ Apicurio ๋ด๋ถ ์ฐธ์กฐ ํ์ธ์ ์ง์ํ๋๋ก ์ ํจ์ฑ ๊ฒ์ฌ๊ฐ ์ ๋ฐ์ดํธ๋์์ต๋๋ค. ์ด๊ฒ์ ๋ฌธ์ ์ ๋ฐ์ ๊ฑธ์น ์ฐธ์กฐ์ ๋ํ ์ฑ์ํ ์ง์์ ์ํ ์ข์ ์ฒซ ๋ฒ์งธ ๋จ๊ณ๊ฐ ๋์ด์ผ ํฉ๋๋ค.