allOf
ํ์ฌ https://swagger.io/docs/specification/data-models/inheritance-and-polymorphism/์ ์ ์๋ ๋๋ก ์์์ ๋ชจ๋ธ๋งํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
@EricWittmann ์ ๋๊ตฌ์์ ์ง๋ ๋ฉฐ์น ์ ๋ณด๋์ต๋๋ค. ์ด๊ฒ์ ์๋ง๋ ๋ด๊ฐ ๊ณ ๊ฐ๊ณผ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ๋ฐฉํด๊ฐ ๋๋ ๊ฐ์ฅ ํฐ ๊ฒฉ์ฐจ์ผ ๊ฒ์ ๋๋ค.
ํ์ธ. ๋ชฉ๋ก์ ์ถ๊ฐ!
์ด๊ฒ์ ๋ํด ๋ ์๊ฐํ์๊ฒ ์ต๋๊น? ์ผ๋ถ ํ๋ก์ ํธ๋ฅผ ์์ํ๊ธฐ ์ํด ์ฝ๊ณ ์์ผ๋ฉฐ apicruio๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ง๋ง ์ด ๋ฌธ์ ๋ ์ค์ ์ฐจ๋จ์ ๋๋ค.
์ด ๋ถ์ผ์ ๋ํด ๋ช ๊ฐ์ง ์๊ฐ์ด ์์์ง๋ง ์ค์ ๋ก ์์ ํ ๊ธฐํ๊ฐ ์์์ต๋๋ค. ๊ธฐ๋ฅ ๋ฐฑ๋ก๊ทธ๋ ๋น๊ต์ ๊ด๋ฒ์ํ UX ํ์ ์ ํฌํจํ์ฌ ์๋นํ ๊ด๋ฒ์ํฉ๋๋ค.
allOf(์๋ง๋ oneOf ๋ฐ anyOf)๋ฅผ ์ง์ํ๋ UI๊ฐ ์ด๋ป๊ฒ ์๊ฒผ๋์ง ์๊ฐํด ๋ณธ ์ ์ด ์์ต๋๊น?
allOf๋ ์ ์ foo๊ฐ ์ ์ ๋ง๋๋ฅผ ํ์ฅํ๊ณ ๋ฐ๋์งํ๊ฒ๋ ๋ง๋์ ์ผ๋ถ์ธ ํ๋ ์ด๊ฑฐ๋ฅผ ํ์ฅํ๋ค๋ ๊ฒ์ ๋ณด์ฌ์ค์ผ ํฉ๋๋ค. foo์ ๋ณด๊ธฐ๋ ๋ง๋์ ํ์ดํผ๋งํฌ๋์ด์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์์ ์ผ์ข ์ ๋ถํ ํ๋ฉด์ ์์ํ๊ณ ์์ง๋ง UI ๋์์ธ์ ๋ด ๊ฐ์ ์ด ์๋๋๋ค.
oneOf์ anyOf๋ UX ๊ด์ ์์ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก์ ๋๋ค. ์ด๋ฌํ ์๋๋ฆฌ์ค์์๋ ๋ณ์๋ฅผ ํ ๋นํ ๋ ์ฌ์ฉํ ์ ์๋ ์ ์๋ฅผ ๊ฐ๋จํ ์ด๊ฑฐํ ํ์๊ฐ ์์ง๋ง allOf์์ ํ์ํ ๊ฒ์ฒ๋ผ ์ ์์ ์ธ๋ถ ์ฌํญ์ ๋ณผ ํ์๋ ์์ต๋๋ค. ์ ์ ์ด๋ฆ ๋ชฉ๋ก๋ง ์๋ฉด ๋ฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ ๋ญ๊ฐ๋ฅผ ์๊ฐํด๋ผ ์ ์๋์ง ์์๋ณด๊ธฐ ์ํด UX์ ๋ฌธ์ ๋ฅผ ์ ๊ธฐํ๊ฒ ์ต๋๋ค. ๋ถํํ๋ ๊ทธ๊ฒ์ ์๋ง๋ ํ ์ผ ๋ชฉ๋ก์์ ๊ฐ์ฅ ๋์ ํญ๋ชฉ์ ์๋์ง๋ง ์ต์ ์ ๋คํ ๊ฒ์ ๋๋ค. :)
์๊ฒ ์ต๋๋ค. ์คํ์ค์์ ์ด ์ฅ์น๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ํ์ํ ์ฌํญ์ ๋ํ ์ปจํ ์คํธ๋ฅผ ์๊ณ ์ถ์ต๋๋ค. ์ด๊ฒ์ด ์ง๊ธ ๊ฐ์ฅ ํฐ ๋ฌธ์ ์ ๋๋ค. ๋๋ถ๋ถ์ ๋ค๋ฅธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ค์ ํ๋ก์ ํธ์์ ์์์ ์ํํ ์ ์์ด์ผ ํฉ๋๋ค.
์ ๋์ ์ผ๋ก ์ดํดํ์ต๋๋ค. :) ๋๋ ์ด ์๊ตฌ ์ฌํญ์ ๊ฐ๋ฅํ ํ ๋ง์ด ์ฌ๋ฆด ๊ฒ์ ๋๋ค. ๋๋ ํ์คํ Apicurio๊ฐ ์ค์ ํ๋ก์ ํธ์์ ๊ฐ๋ฅํ ํ ์ ์ฉํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๊ฐ์ ํ ์ ์๋ ์์ง ์ธ๊ธํ์ง ์์ ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ ํด๋น ๋ฌธ์ ์ ๋ํด์๋ ์๋ ค์ฃผ์ธ์. (์ฐธ๊ณ : "๋ฆฌ์์ค"์ ๋ํ ํ์ค ์์ ์ ํจ์ฌ ์ฝ๊ฒ ๋น ๋ฅด๊ฒ ์ถ๊ฐํ ์ ์๋๋ก ํ๋ CRUD ๊ธฐ๋ฅ์ ์ค๊ณํ๋ ์ค์ ๋๋ค.
์๋ ํ์ธ์, ์ด๊ฒ์ ๋ํ ์์์ด ์์ต๋๊น? ๊ทธ๋ฐ ์ข์ ๋๊ตฌ๊ฐ ์์์ ๋ค๋ฃฐ ์ ์๋ค๋ ๊ฒ์ด ์ ๊ฐ์ ๋๋ค ...
๋ถํํ๋ ์์ง ์๋ฌด๊ฒ๋ ์์ง๋ง ์์์ ์ง์ํ๋ ค๋ ์๊ตฌ๊ฐ ๋ถ์กฑํ์ง๋ ์์ต๋๋ค. ์ฐ์ ์์ ๋ฌธ์ ์ผ ๋ฟ์ ๋๋ค.
๋๊ตฐ๊ฐ UX ๋์์ธ ๊ธฐ์ ์ ๊ฐ์ง๊ณ ์๋ค๋ฉด ์ด๊ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง์ ๋ํ ๋ชจํ์ด ํฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค. @sherl0cks๋ ์ด๋ฏธ ๋ช ๊ฐ์ง ์์ด๋์ด๋ฅผ ์ ๊ณตํ์ง๋ง UX ๋์์ธ์ผ๋ก ์ฌ๊ธฐ์์ ๋ฌด์ธ๊ฐ๋ฅผ ๊ตฌํํ๋ ๊ฒ์ด ํจ์ฌ ์ฌ์ธ ๊ฒ์ ๋๋ค. ๋๋ ์ํ๋ ๋ฐฉ์์ผ๋ก ์ ์ฌํ ์์ ์ ์ํํ๋ ๋๊ตฌ๊ฐ ์๋ค๋ฉด ์์ ๋กญ๊ฒ ์ง์ ํด ์ฃผ์ญ์์ค!
๋ฌผ์ด๋ณผ ๊ฒ์ด ๋ง๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. :)
์ด๋ ์ชฝ์ด๋ , ์ด๊ฒ์ ์๋ฃ๋ ๊ฒ์ ๋๋ค. ์ ๋ ์์ง ์ธ์ ์ธ์ง ๋ชจ๋ฆ ๋๋ค.
์ด๋ด,
UX ๋ถ๋ถ์ด ์ฌ์ ํ ์ฐจ๋จ๊ธฐ์ธ ๊ฒฝ์ฐ - https://imagebin.ca/v/4mkbz35931av ์ ๊ฐ์ ๊ธฐ์กด ํญ ์คํ์ผ์ ์ฌ์ฌ์ฉํ์ง ์๋ ์ด์
๋์ - "๋ณตํฉ" ๋ฐ์ดํฐ ์ ํ(๋ฐฐ์ด, ๋ฌธ์์ด, ๋ถ๋ ์์์ , ... ์์)์ ๋ง๋ค๊ณ ์ ํํ๋ฉด ์ผ์ชฝ์ ์ฝ๊ฐ์ ํจ๋ฉ์ด ์๋ ๋์ผํ ์์(๋ค์ํ ์ ํ์ ์ถ๊ฐํ ์ ์๋ ๊ณณ)์ ๋ ๋๋งํฉ๋๋ค.
ps ์์์ ๋ณต์ฌ-๋ถ์ฌ๋ฃ๊ธฐ๋ฅผ ๋ง์ด ์ ์ฅํ๋ ํฌ๋ฌ OpenApi ๋ฌธ์ ๊ธฐ๋ฅ์ ๋๋ค!
๋์์ง ์์ ๋์์ธ์ด๋ค์! ๊ธฐ์ฌํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋ฐ๋ผ๊ฑด๋ ๋น์ ์ด ์ด๊ฒ์ผ๋ก ๊ด์ฐฎ ์์ผ๋ฉดํ์ง๋ง ์ผ์ ๋ ์ฝ๊ฒํ๊ธฐ ์ํด ์ด๋ฏธ์ง๋ฅผ ์ธ๋ผ์ธํ๋ ๊ฒ์ด ์ ์ฉ ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค (imagebin์ ํด๋ฆญ ํ ํ์๊ฐ ์์).
์๋, ๊ณต๊ฐ๋ ๋๊น์ง ๊ธฐ๋ค๋ ธ๋ค๊ฐ ์ ์๊ถ ์นจํด๋ฅผ ์ฃผ์ฅํ๊ฒ ์ต๋๋ค! :NS
ps ๊ทธ ์ธ์๋ - ์ฌ๋ฌ๋ถ์ ํ๋ฅญํ ๋๊ตฌ๋ฅผ ๋ง๋ค์์ต๋๋ค! ์ถํ ํด์!
ใ ! ๐คฃ
์ด ๊ธฐ๋ฅ์ด ๊ตฌํ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค!
์ง๊ธ(๋ง์นจ๋ด) ์์ ์ค์ ๋๋ค. :)
์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง ๊ธฐ๋ณธ allOf, oneOf ๋ฐ anyOf ์ง์์ ์ด๊ธฐ ๊ตฌํ(OpenAPI 2.0 ๋ฌธ์์ ๊ฒฝ์ฐ "allOf"์ผ๋ฟ์ ๋๋ค).
์ด๊ฒ์ ์ง์์ ๋ฒ ํ ๊ตฌํ์ผ ๋ฟ์ ๋๋ค. ์ด์ ๋ํ ํผ๋๋ฐฑ์ ๋ฐ๊ณ ์ถ์ต๋๋ค. ๊ฐ์ ํ ์ ์๋ ๋ถ๋ถ์ด ๋ง๋ค๊ณ ์๊ฐํ์ง๋ง ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋จผ์ ์๊ฐํ๋ ๊ฒ์ด ๋ฌด์์ธ์ง ๊ถ๊ธํฉ๋๋ค.
์ค๋์ ๋ชจ๋๊ฐ Apicurio Studio์ Try Now(ํด๋ผ์ฐ๋) ๋ฒ์ ์ ์ฌ์ฉํ์ฌ ๊ธฐ๋ฅ์ ํ ์คํธํ ์ ์๋๋ก ๋ฆด๋ฆฌ์ค๋ฅผ ํ ๊ฒ์ ๋๋ค.
๋ณ๊ฒฝ ์ฌํญ์๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋จ์ ์ ํ์ ๋ํ ๊ฐ์ ์ฌํญ๋ ํฌํจ๋์ด ์์ต๋๋ค. ๋ฐ๋ผ๊ฑด๋ ๊ทธ๊ฒ์ ๋ํ ์ผ๋ถ ์ฌ์ฉ์์๊ฒ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
๋ถํํ๋ ๋ด๊ฐ apicurio๋ฅผ ์ฌ์ฉํ๋ ์ญํ ์ ๋ ์ด์ ์์ง๋ง @EricWittmann์ ํ๋ฅญํ๊ฒ
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด ๊ธฐ๋ฅ์ด ๊ตฌํ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค!