Apicurio-studio: ํŽธ์ง‘๊ธฐ: allOf ์ง€์›(๋ฐ์ดํ„ฐ ์œ ํ˜• ์ƒ์†)

์— ๋งŒ๋“  2018๋…„ 07์›” 18์ผ  ยท  20์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: Apicurio/apicurio-studio

allOf ํ•˜์—ฌ https://swagger.io/docs/specification/data-models/inheritance-and-polymorphism/์— ์ •์˜๋œ ๋Œ€๋กœ ์ƒ์†์„ ๋ชจ๋ธ๋งํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

enhancement

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค!

๋ชจ๋“  20 ๋Œ“๊ธ€

@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์„ ํด๋ฆญ ํ•  ํ•„์š”๊ฐ€ ์—†์Œ).

4mkbz35931av

์•„๋‹ˆ, ๊ณต๊ฐœ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ์ €์ž‘๊ถŒ ์นจํ•ด๋ฅผ ์ฃผ์žฅํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! :NS

ps ๊ทธ ์™ธ์—๋Š” - ์—ฌ๋Ÿฌ๋ถ„์€ ํ›Œ๋ฅญํ•œ ๋„๊ตฌ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค! ์ถ•ํ•˜ ํ•ด์š”!

ใ…‹! ๐Ÿคฃ

์ด ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค!

์ง€๊ธˆ(๋งˆ์นจ๋‚ด) ์ž‘์—… ์ค‘์ž…๋‹ˆ๋‹ค. :)

์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ๊ธฐ๋ณธ allOf, oneOf ๋ฐ anyOf ์ง€์›์˜ ์ดˆ๊ธฐ ๊ตฌํ˜„(OpenAPI 2.0 ๋ฌธ์„œ์˜ ๊ฒฝ์šฐ "allOf"์ผ๋ฟ์ž…๋‹ˆ๋‹ค).

์ด๊ฒƒ์€ ์ง€์›์˜ ๋ฒ ํƒ€ ๊ตฌํ˜„์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์ด ๋งŽ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋จผ์ € ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋Š˜์€ ๋ชจ๋‘๊ฐ€ Apicurio Studio์˜ Try Now(ํด๋ผ์šฐ๋“œ) ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฆด๋ฆฌ์Šค๋ฅผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ณ€๊ฒฝ ์‚ฌํ•ญ์—๋Š” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋‹จ์ˆœ ์œ ํ˜•์— ๋Œ€ํ•œ ๊ฐœ์„  ์‚ฌํ•ญ๋„ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋ผ๊ฑด๋Œ€ ๊ทธ๊ฒƒ์€ ๋˜ํ•œ ์ผ๋ถ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ถˆํ–‰ํžˆ๋„ ๋‚ด๊ฐ€ apicurio๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์—ญํ• ์€ ๋” ์ด์ƒ ์—†์ง€๋งŒ @EricWittmann์€ ํ›Œ๋ฅญํ•˜๊ฒŒ

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰