Api-blueprint: ๋ชจ๋“ˆ์„ฑ

์— ๋งŒ๋“  2013๋…„ 08์›” 14์ผ  ยท  34์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: apiaryio/api-blueprint

ํ•˜๋‚˜์˜ API ๋‚ด์—์„œ ์—ฌ๋Ÿฌ API ์ฒญ์‚ฌ์ง„ ํŒŒ์ผ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

Language Idea Feature

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

@DavidBM ์ €๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐœ์˜ apiary.apib ๋ฌธ์„œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ปดํŒŒ์ผ๋˜์ง€ ์•Š์Œ

apiary-source.apib - ํฌํ•จ ๊ธฐ๋Šฅ ์„ ์‚ฌ์šฉํ•˜๋Š” ์ปดํŒŒ์ผ๋˜์ง€ ์•Š์€ ์†Œ์Šค

FORMAT: 1A
HOST: https://api.example.com

# Hello World

<!-- include(blueprint/posts.apib) -->

์—ฎ๋‹ค

๋‹ค์Œ์„ ๊ฐ„๋‹จํžˆ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

aglio --input apiary-source.apib --compile --output apiary.apib

์ด์ œ apiary.apib ์— blueprint/posts.apib ์˜ ๋‚ด์šฉ์ด ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

๋งŽ์€ ์ˆ˜์˜ API๊ฐ€ ์žˆ๊ณ  ํšŒ์‚ฌ์˜ ๋‹ค๋ฅธ ๊ทธ๋ฃน์ด ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ์˜ ๊ฒฝ์šฐ ์ด๊ฒƒ์€ ์ ˆ๋Œ€์ ์ธ ์‹ ์˜ ์„ ๋ฌผ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@rurounijones ์„ค๋ช…์„ ์œ„ํ•ด ์ด ๊ธฐ๋Šฅ์€ "ํ•˜๋‚˜์˜ API ์„ค๋ช…์„ ์—ฌ๋Ÿฌ ํŒŒ์ผ๋กœ ๋ถ„ํ• ํ•  ์ˆ˜ ์žˆ์Œ"์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋ˆ„๊ตฌ๋“ ์ง€ ์ด๊ฒƒ์— ๋Œ€ํ•ด ์–ด๋–ค ์ƒ๊ฐ์ด ์žˆ์Šต๋‹ˆ๊นŒ? Drafter https://github.com/apiaryio/snowcrash/issues/57#issuecomment -28538342์— ๋Œ€ํ•œ ๋‚ด ์ด์ „ ์˜๊ฒฌ์— ๋”ฐ๋ผ

์˜ต์…˜์€ ์ฒญ์‚ฌ์ง„ ์ƒ๋‹จ์— ์ผ๋ถ€ ํฌํ•จ/์š”๊ตฌ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋ชจ๋“  ์ฒญ์‚ฌ์ง„์„ ๊ฐ€์ ธ์™€์„œ ํ•จ๊ป˜ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ƒ๊ฐ?

์—ฐ๊ฒฐ์€ ๋” ๊ฐ„๋‹จํ•˜์ง€๋งŒ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋Œ€๋กœ require๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์šธ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๊ทธ ๋‹ค์Œ์— ๋‹ค๋ฅธ ๊ฒƒ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ํŠนํ—ˆ์— ์ •์˜๋œ ๊ฒƒ์ฒ˜๋Ÿผ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ๋งน๋ชฉ์ ์œผ๋กœ ์ธ๋ผ์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ํŒŒ์ผ์˜ ๋‚ด์šฉ์— ์–ด๋–ค ์ข…๋ฅ˜์˜ ์ œํ•œ์ด ์žˆ์Šต๋‹ˆ๊นŒ(์˜ˆ: ๊ณ ์œ ํ•œ yaml ํ—ค๋”๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ƒ์œ„ yaml๊ณผ์˜ ์ถฉ๋Œ?) ๋‚˜๋Š” ์ œํ•œ์ด ์—†๋Š” ๊ฒƒ์ด ๋” ๋‚˜์„ ๊ฒƒ์ด๋ผ๋Š” ๋Š๋‚Œ์„ ๋ฐ›์•˜์ง€๋งŒ ๊ทธ๊ฒƒ์„ ๊บผ๋‚ผ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

@zdne

๋จผ์ €, ๊ฐ„๋‹จํ•œ ํŒŒ์ผ ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉํ•˜์—ฌ Grunt๋กœ ์ด๋ฏธ ์ด๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์ดˆ ์‹œ์Šคํ…œ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ์ฒญ์‚ฌ์ง„์€ ๊ด€๋ฆฌํ•  ์ˆ˜ ์—†๊ฒŒ ๋˜์—ˆ๊ณ , ์ด๊ฒƒ์€ ํŒŒ์ผ๋กœ ๋ถ„ํ• ํ•˜๋Š” ๋น ๋ฅด๊ณ  ๋”๋Ÿฌ์šด ๋ฐฉ๋ฒ•์ด์—ˆ์Šต๋‹ˆ๋‹ค(์ฐธ๊ณ ๋กœ, ํŒŒ์ผ ์‹œ์Šคํ…œ ์ˆœ์„œ์— ๋”ฐ๋ผ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž„์˜์ ์œผ๋กœ ๋งŽ์€ ํŒŒ์ผ์ด ์žˆ์Œ). ์—ฌ๊ธฐ ์— ์งง์€ ์„ค๋ช…๊ณผ ํ•จ๊ป˜ ๋‚ด Gruntfile์„ ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

์—ฐ๊ฒฐ์ด ๋„ˆ๋ฌด ๊ฐ„๋‹จํ•˜์—ฌ ์Šค์Šค๋กœ ๊ตด๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ "๊ณต์‹" ๋„๊ตฌ๊ฐ€ ๋” ๊ฐ•๋ ฅํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์—ฐ๊ตฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ ์ด์— ๋Œ€ํ•ด ๋” ๋งŽ์ด ์ƒ๊ฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ํฌํ•จ/์š”๊ตฌ

    • ํฌํ•จ์€ ํŒŒ์ผ ์ƒ๋‹จ์—์„œ ์ˆ˜ํ–‰๋˜๊ณ  ํŒŒ์ผ์˜ ์ผ๋ถ€๋Š” ํŒŒ์ผ ๋‚ด์—์„œ ์ฐธ์กฐ๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ํ˜„์žฌ์˜ [Model Reference][] ๊ตฌ๋ฌธ๋ณด๋‹ค ๋” ๊ฐ•๋ ฅํ•œ ์ฐธ์กฐ ์‹œ์Šคํ…œ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ ํฌํ•จ๋œ ํŒŒ์ผ์˜ ๋ชจ๋“  ๋…ธ๋“œ๋Š” ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ [github.Users.'Create A User'][] ๋˜๋Š” [github][POST /users] ๋“ฑ๊ณผ ๊ฐ™์€ ๋…ธ๋“œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ( = ์™€ ๊ฐ™์€ ์ ‘๋‘์‚ฌ๊ฐ€ ํ•„์š”ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.) name ๋˜๋Š” url+method ์™ธ์— AST์˜ ํŠน์ • ๋…ธ๋“œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

    • ๋…ธ๋“œ ๋‚ด์šฉ์„ ์—ญ์ฐธ์กฐํ•˜๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ ์ถ”๊ฐ€ ๋น„์šฉ ์—†์ด ๋งŽ์€ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” C ์ „์ฒ˜๋ฆฌ๊ธฐ๋กœ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. ํ…œํ”Œ๋ฆฟ ์‹œ์Šคํ…œ/ํŠธ๋žœ์Šค๋ฃจ์ ผ

    • ๋น„ ๋งˆํฌ๋‹ค์šด - ํ…œํ”Œ๋ฆฟ์€ ๋ณ„๋„์˜ ํ…œํ”Œ๋ฆฟ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋˜๋ฏ€๋กœ ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ์€ snowcrash๋กœ ๊ตฌ๋ฌธ ๋ถ„์„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์€ ๊ฒƒ์˜ ์˜ˆ๋กœ๋Š” grunt-readme ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ฒญ์‚ฌ์ง„ ํŒŒ์ผ์„ ํ…œํ”Œ๋ฆฟํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

    • ๋งˆํฌ๋‹ค์šด - ์ด๊ฒƒ์€ ์ดˆ์•ˆ ๋ฌธ์ œ์—์„œ ๋…ผ์˜ํ•œ =[]() ๋˜๋Š” :[]() ๊ตฌ๋ฌธ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ์œ ํšจํ•œ ๋งˆํฌ๋‹ค์šด์ด๋ฉฐ snowcrash๋กœ ๊ตฌ๋ฌธ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  3. ๋‘˜ ๋‹ค

    • ์ฐธ์กฐ ๋…ธ๋“œ( [github]['Create A User'] ) ๋ฐ ์ง์ ‘ ๋ณ€ํ™˜( :[/github.md](/github.md) )์— ๋Œ€ํ•œ ๊ตฌ๋ฌธ์„ ์ •์˜ํ•˜๋ฉด ๋‘˜ ๋‹ค ์‰ฝ๊ฒŒ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ :[]() ์™€ ๊ฐ™์€ ์ผ๋ฐ˜ ๊ตฌ๋ฌธ์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ํŒŒ์„œ๋Š” ๋…ธ๋“œ์ธ์ง€ ํŒŒ์ผ ์ฐธ์กฐ์ธ์ง€ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ์ƒ๊ฐ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ผ๋ถ€ ์˜ต์…˜/๋„๊ตฌ๊ฐ€ ๋ˆ„๋ฝ๋˜์—ˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” transclusion ๋ฐ node ์—ญ์ฐธ์กฐ๋ฅผ ์œ„ํ•œ ๊ณตํ†ต ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ "both" ์˜ต์…˜์„ ์„ ํ˜ธํ•˜์ง€๋งŒ ์•„๋งˆ๋„ ๊ทธ ์ •๋„์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฐ๊ฒฐ์ด ์Šค์Šค๋กœ ๊ตด๋ฆฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์‰ฝ๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ "๊ณต์‹" ๋„๊ตฌ๊ฐ€ ๋” ๊ฐ•๋ ฅํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค.

๊ธ€์Ž„, ๊ฒฐ๊ตญ์€ ๊ทธ๋Ÿด ์ˆ˜๋„ ์žˆ๊ฒ ์ง€๋งŒ, ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ง€๋‚˜์น˜๊ฒŒ ๋””์ž์ธํ•˜์ง€ ์•Š๊ณ  ๊ตฌ๊ฑธ์—์„œ ๊ฐ„๊ฒฐํ•˜๊ณ  ๋‹จ์ˆœํ•œ ๊ฒƒ์„ ๋กค์•„์›ƒํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐํ•ด์•ผ ํ•  ํ˜„์žฌ ๋ฌธ์ œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด ์ฃผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ์ฐธ์กฐ๋œ(์™ธ๋ถ€) ์ž์‚ฐ - #20 ๋ฐ https://github.com/apiaryio/snowcrash/issues/57#issuecomment -28564071์—์„œ ๋…ผ์˜๋จ
  2. ์ฒญ์‚ฌ์ง„์„ ๋ณด๋‹ค ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฌ์šด ๋…ผ๋ฆฌ์  ๋ถ€๋ถ„์œผ๋กœ ๋ถ„ํ• 

๋ถ„ํ• ์„ ์œ„ํ•ด ๋ฆฌ์†Œ์Šค ๊ทธ๋ฃน ๋˜๋Š” ๋ฆฌ์†Œ์Šค(์˜ˆ: ์ž‘์—…, ํŠธ๋žœ์žญ์…˜ ์˜ˆ์ œ ๋˜๋Š” ์š”์ฒญ ์ œ์™ธ)๋งŒ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค. ์ ์–ด๋„ ์ฒ˜์Œ์—๋Š”.

๊ด‘๊ณ  1: _์ฐธ์กฐ๋œ ์ž์‚ฐ_์ด #20์˜ ์ œ์•ˆ์— ์˜ํ•ด ์šฐ์•„ํ•˜๊ฒŒ ์ฒ˜๋ฆฌ๋˜๊ณ  https://github.com/apiaryio/snowcrash/issues/57#issuecomment -28564071 ๋…ผ์˜๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ด‘๊ณ  2: ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ „ํ˜€ ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ค์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ transclusion์— ์‚ฌ์šฉํ•  ์œ ์ผํ•œ ๊ฒƒ์€ [Some Text](path/to/blueprint/file.apib) ๋˜๋Š” [Some Text](path/to/blueprint/file.apib#resource-name) ์™€ ๊ฐ™์€ ์ผ๋ฐ˜ ๋งˆํฌ๋‹ค์šด ๊ตฌ๋ฌธ์ž…๋‹ˆ๋‹ค. ํฌํ•จ์„ ์œ„ํ•ด ๋“œ๋ž˜ํ”„ํ„ฐ์˜ ์ž์‚ฐ๊ณผ ๋™์ผํ•œ ์›์น™์„ ๋”ฐ๋ฅผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ฐธ์กฐ ์ „์— : ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. https://gist.github.com/zdne/8804418#aliens -question-aliens_question๊ณผ ๊ฐ™์€ ๊ฒƒ

๋‚˜๋Š” ์ด๊ฒƒ์ด ์‹œ์ž‘์— ์ถฉ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ?

๋‚˜๋Š” ์ด๊ฒƒ์ด ์‹œ์ž‘์— ์ถฉ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ?

๋™์˜. ๋‚˜๋Š” ๋‹น์‹ ์ด "์ž์‚ฐ"์„ ํฌํ•จํ•˜๋Š” ๊ฒƒ๊ณผ "๋ฆฌ์†Œ์Šค"/"๋ฆฌ์†Œ์Šค ๊ทธ๋ฃน"์„ ํฌํ•จํ•˜๋Š” ๊ฒƒ์„ ๊ตฌ๋ณ„ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ด์ œ์•ผ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค ๋ชจ๋‘๋ฅผ ๋งˆ์Œ๋Œ€๋กœ ํฌํ•จ์‹œํ‚ฌ "๋…ธ๋“œ"๋กœ ์ƒ๊ฐํ•˜๊ณ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ์š”์ ์— ๋Œ€ํ•ด์„œ๋Š” ๊ธฐ์กด MultiMarkdown ๊ตฌ๋ฌธ ์„ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

This is some text.

{{some_other_file.txt}}

Another paragraph

์ด๊ฒƒ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๊นŒ? (๋˜๋Š” ์‹ค์ œ๋กœ ์ž„์˜์˜ ํ…์ŠคํŠธ/๋…ธ๋“œ?)

๋”ฐ๋ผ์„œ ๋‚ด ์˜๊ฒฌ์„ ๋ช…ํ™•ํžˆํ•˜๊ธฐ ์œ„ํ•ด :

  1. ์ฐธ์กฐ๋œ ์ž์‚ฐ์— ๋Œ€ํ•œ ์ข‹์€ ๊ตฌ๋ฌธ์€ ๋…ผ์˜๋œ ๋Œ€๋กœ :[]() ๋˜๋Š” =[]() ์ž…๋‹ˆ๋‹ค.
  2. transclusion์— ๋Œ€ํ•œ ์ข‹์€ ๊ตฌ๋ฌธ์€ multimarkdown์—์„œ ์‚ฌ์šฉ๋˜๋Š” {{ }} ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ์ผ๋ถ€ ์–ดํœ˜๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๊ธฐ ์œ„ํ•ด: "ํฌํ•จ"์ด๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ์€ ์ œ๊ฐ€ "transclusion"์ด๋ผ๊ณ  ๋งํ•  ๋•Œ ์˜๋ฏธํ•˜๋Š” ๋ฐ”, ์ฆ‰ ์ž๋ฆฌ ํ‘œ์‹œ์ž๋ฅผ ๋‹ค๋ฅธ ํŒŒ์ผ์˜ ํ…์ŠคํŠธ๋กœ ์™„์ „ํžˆ ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ์„ ๋งํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค๋ฉด "์ฐธ์กฐ"์™€ "ํฌํ•จ"/"๋ณ€ํ™˜"์˜ ์ฐจ์ด์ ์€ ๋‹จ์ˆœํžˆ _๋ Œ๋”๋ง_์„ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŒŒ์„œ์—๊ฒŒ ์ž์‚ฐ(์˜ˆ: ์ž์‚ฐ)์ด ์ฐธ์กฐ๋˜๊ฑฐ๋‚˜ ์ œ์™ธ๋˜๋Š”์ง€ ์—ฌ๋ถ€๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋™์ผํ•œ AST ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ๊ทธ ๋งž์Šต๋‹ˆ๊นŒ?

  1. ์ฐธ์กฐ ์ž์‚ฐ์— ๋Œ€ํ•œ ์ข‹์€ ๊ตฌ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋˜๋Š” = ๋…ผ์˜๋œ ๋Œ€๋กœ
  2. ๋‚˜๋Š” ๋‹ค์ค‘ ๋งˆํฌ๋‹ค์šด์—์„œ ์‚ฌ์šฉ๋˜๋Š” {{ }} ํŠธ๋žœ์Šคํด๋ฃจ์ „์„ ์œ„ํ•œ ์ข‹์€ ๊ตฌ๋ฌธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• ๋Œ€์‹  ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ด ๋‘˜์„ ๊ตฌ๋ฌธ์ ์œผ๋กœ ๊ตฌ๋ณ„ํ•˜๋ฉด ์–ด๋–ค ์ด์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” 1๋ฒˆ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ทธ๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹ํ‰๋ฒ”ํ•œ Markdown์—์„œ ๋”ฐ๋ฅผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

"ํฌํ•จ"์ด๋ผ๊ณ  ํ•˜๋ฉด ์ œ๊ฐ€ "ํŠธ๋žœ์Šคํด๋ฃจ์ ผ"์ด๋ผ๊ณ  ํ•  ๋•Œ ์˜๋ฏธํ•˜๋Š” ๋ฐ”, ์ฆ‰ ์ž๋ฆฌ ํ‘œ์‹œ์ž๋ฅผ ๋‹ค๋ฅธ ํŒŒ์ผ์˜ ํ…์ŠคํŠธ๋กœ ์™„์ „ํžˆ ๋ฐ”๊พธ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ๋ถ€ํ„ฐ transclusion์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”!

๋‚ด๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค๋ฉด "์ฐธ์กฐ"์™€ "ํฌํ•จ"/"๋ณ€ํ™˜"์˜ ์ฐจ์ด์ ์€ ๋‹จ์ˆœํžˆ ๋ Œ๋”๋ง์„ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์„ค๋งˆ. ๋‚ด ์˜๊ฒฌ์œผ๋กœ๋Š” ์ฐธ์กฐ(์ฐธ์กฐ ์ƒ์„ฑ)๋Š” ์‹ค์ œ๋กœ ์ถœ๋ ฅ(AST)์— ๋Œ€ํ•œ ๋งํฌ๋งŒ ์ถ”๊ฐ€ํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋„๊ตฌ์— ๋‚จ๊ฒจ ๋‘์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(https://github.com/apiaryio/api-blueprint/issues/20#issuecomment-26766374 )

Translcusion์€ ํŒŒ์„œ(๋˜๋Š” ์ „์ฒ˜๋ฆฌ๊ธฐ)์— ๋‚ด์šฉ์„ ๊ฐ€์ ธ์˜ค๋„๋ก ์ง€์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค...

ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• ๋Œ€์‹  ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ด ๋‘˜์„ ๊ตฌ๋ฌธ์ ์œผ๋กœ ๊ตฌ๋ณ„ํ•˜๋ฉด ์–ด๋–ค ์ด์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” 1๋ฒˆ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ทธ๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹ํ‰๋ฒ”ํ•œ Markdown์—์„œ ๋”ฐ๋ฅผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹จ์ง€ ํ•˜๋‚˜๋ฅผ ๊ฐ–๋Š” ๊ฒฝ์šฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (๋˜ํ•œ ์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์ธ :[][] ๋˜๋Š” =[][] ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค).

์ •๋ณด๋ฅผ ๋ณ€ํ™˜ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ์ด๋ฉด์˜ ์•„์ด๋””์–ด๋Š” AST์™€ html/md/etc ๋ Œ๋”๋ง์„ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  1. ๋ฌธ์„œ์— ๋งํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ :[link][link.md] ๋Š” ๋งˆํฌ๋‹ค์šด์—์„œ :link ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๋งํฌ๋กœ ๋ Œ๋”๋ง๋˜์ง€๋งŒ AST์—์„œ ํ•ด๋‹น ๋…ธ๋“œ๋Š” link.md์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ๋ณด์œ ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ฌธ์„œ๋ฅผ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ =[link][link.md] ๋Š” ๋งˆํฌ๋‹ค์šด์—์„œ link.md์˜ _content_๋กœ ๋ Œ๋”๋ง๋ฉ๋‹ˆ๋‹ค. AST ํ‘œํ˜„์€ 1๊ณผ ๋™์ผํ•˜๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋‚˜๋Š” ์—ฌ๊ธฐ์„œ ์™„์ „ํžˆ ๋ฒ—์–ด๋‚  ์ˆ˜ ์žˆ๊ณ  ์ด๊ฒƒ์€ ํ•„์š”ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์šฐ๋ฆฌ๋Š” ํ•˜๋‚˜์˜ ๊ตฌ๋ฌธ์œผ๋กœ ๊ฐ€์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด ์ถ”๋ก ์€ ์ฒญ์‚ฌ์ง„์ด ํ‘œ์‹œ๋˜๋Š” ๋ฐฉ์‹์ด AST๋กœ ๊ตฌ๋ฌธ ๋ถ„์„๋˜๋Š” ๋ฐฉ์‹๊ณผ ๋‹ฌ๋ผ์•ผ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด ์˜๊ฒฌ์œผ๋กœ๋Š” ์ฐธ์กฐ(์ฐธ์กฐ ์ƒ์„ฑ)๋Š” ์‹ค์ œ๋กœ ์ถœ๋ ฅ(AST)์— ๋Œ€ํ•œ ๋งํฌ๋งŒ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. [...] Translcusion์€ ํŒŒ์„œ(๋˜๋Š” ์ „์ฒ˜๋ฆฌ๊ธฐ)๊ฐ€ ๋‚ด์šฉ์„ ๊ฐ€์ ธ์˜ค๋„๋ก ์ง€์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค...

์ด๊ฒƒ์„ ๋™์ผํ•œ ๊ฒƒ์œผ๋กœ(ํ•˜๋‚˜์˜ ๊ตฌ๋ฌธ) ๋˜๋Š” ๋‘ ๊ฐœ์˜ ๊ฐœ๋ณ„ ํ•ญ๋ชฉ(2๊ฐœ์˜ ๋‹ค๋ฅธ ๊ตฌ๋ฌธ)์œผ๋กœ ์ฒ˜๋ฆฌํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ๋‚˜์—๊ฒŒ๋Š” ๊ดœ์ฐฎ์•„ ๋ณด์ธ๋‹ค. (๋‚ด๊ฐ€ ๋” ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๊นŒ?)

:+1:

Whisky๋Š” ์ด์ œ .apib ํ™•์žฅ์ž๋ฅผ ์ง€์›ํ•˜๊ณ  ๊ฐœ์š” ๋ณด๊ธฐ๋ฅผ ํ†ตํ•ด ๋Œ€์šฉ๋Ÿ‰ Markdown ํŒŒ์ผ์„ ํ›จ์”ฌ ์‰ฝ๊ฒŒ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. http://vimeo.com/album/3108294/video/110486733

http://9muses.se/erato/ ๋ฐ http://25.io/mou/ ๋Š” ๋ฐ์Šคํฌํ†ฑ ์•ฑ(Mac์šฉ)์„ ์›ํ•˜๋Š” ๊ฒฝ์šฐ .apib๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

Robert Crooks ํ•™์Šต ์„œ๋น„์Šค ์ด์‚ฌ
๋ธŒ๋ผ์ดํŠธ์ฝ”๋ธŒ

2015๋…„ 12์›” 29์ผ ์˜คํ›„ 4์‹œ 8๋ถ„์— Kevin Ingersoll [email protected] ์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

Whisky๋Š” ์ด์ œ .apib๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
ํ™•์žฅ์ž ๋ฐ ๊ฐœ์š” ๋ณด๊ธฐ๋กœ ๋Œ€์šฉ๋Ÿ‰ Markdown ํŒŒ์ผ์„ ํ›จ์”ฌ ์‰ฝ๊ฒŒ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. http://vimeo.com/album/3108294/video/110486733

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
.

@bcls ์™€ @holic , ์ด ํŽธ์ง‘์ž๋“ค์„ ์ง€์ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ด์— ๋Œ€ํ•œ ํ•ต์‹ฌ ๊ฐœ๋ฐœ์ž์˜ ๊ฒฐ์ •์ด ์žˆ์Šต๋‹ˆ๊นŒ? 2013๋…„๋ถ€ํ„ฐ ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ์„ ๋ณด์—ฌ ์•„์ง๊นŒ์ง€ ๋ช…ํ™•ํ•œ ๋‹ต๋ณ€์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด ์„ ์„ ๊ทธ์–ด๋ด๋„ ๋ ๊นŒ์š”?

Hey @foxx ์•„์ง ์ด์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ๊ฒฐ์ •์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” Hercule ์— ๋„์ž…๋œ transclusion ๊ตฌ๋ฌธ์— ๊ธฐ๋Œ€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

FORMAT: 1A

# Gist Fox API
Gist Fox API is a **pastes service** similar to [GitHub's Gist](http://gist.github.com).

# Group Gist

:[Gist](blueprint/gist.md)

:[Gists](blueprint/gists.md)

์ œ์™ธํ•œ

`````` ๋งˆํฌ๋‹ค์šด

  • ๋ชจ๋ธ
+ Body

  ```
  :[](gist.json)
  ```

``````

์ฝ”๋“œ ๋ธ”๋ก์€ ํŒŒ์„œ/์ „์ฒ˜๋ฆฌ๊ธฐ์— ๋ถˆํˆฌ๋ช…ํ•˜๊ฒŒ ์œ ์ง€๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ์ €๋Š” ํŠธ๋žœ์Šคํด๋ฃจ์ „์ด ์–ด๋–ค ์ˆ˜์ค€์—์„œ๋„ ์ž‘๋™ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŠธ๋žœ์Šคํด๋ฃจ๋“œ๋˜๋Š” ํŒŒ์ผ์€ ์œ ํšจํ•œ ์ฒญ์‚ฌ์ง„ ์ž์ฒด์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ์•ฝ์†์€ ๊ธฐ๋Šฅ ๋กœ๋“œ๋งต์—์„œ ์ƒ๋‹นํžˆ ๋†’์ง€๋งŒ ETA๋Š” ์•„์ง ์—†์Šต๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ์˜๊ฒฌ์ด๋‚˜ ์ƒ๊ฐ๊ณผ ๊ธฐ๋Šฅ ๋กœ๋“œ๋งต ๊ฐ€์‹œ์„ฑ์— ๋Œ€ํ•œ ์˜๊ฒฌ์„ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”!

transclusion ๊ตฌ๋ฌธ์€ ์ง€๊ธˆ๊นŒ์ง€ ์ตœ๊ณ ์˜ ์ œ์•ˆ์ฒ˜๋Ÿผ ๋ณด์ด๋ฉฐ ์šฐ์•„ํ•˜๊ณ  ๊น”๋”ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ด๋ฉฐ ์ง€๊ธˆ๊นŒ์ง€ ๋‚ด๊ฐ€ ๋ณธ ๋‹ค๋ฅธ ์–ด๋–ค ์ œ์•ˆ๋ณด๋‹ค ์ข‹์Šต๋‹ˆ๋‹ค. Fwiw, ๋‚˜์—๊ฒŒ์„œ +1.

์ด๊ฒƒ์— ๋Œ€ํ•œ ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๊นŒ?

ํŠธ๋žœ์Šคํด๋ฃจ์ „์„ ์‚ฌ์šฉํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋‚˜์—๊ฒŒ ์ข‹์€ ๊ฒƒ ๊ฐ™์ง€๋งŒ ๋‹จ์ ์€ ์—†์Šต๋‹ˆ๋‹ค.

๋‹น๋ถ„๊ฐ„์€ Hercule ๋ฐ :[Gist](blueprint/gist.md) ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. API Blueprint ์‚ฌ์–‘ ๋ฐ ํŒŒ์„œ ๋„๊ตฌ ์ฒด์ธ์œผ๋กœ ๋‹ค์‹œ ๋ฐฑํฌํŒ…ํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ˆ˜ํ–‰๋œ ์ž‘์—…์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋˜ํ•œ ๋” ํฐ apib ํŒŒ์ผ์„ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋‚˜๋ˆ„๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
๊ฐ์‚ฌ ํ•ด์š”!

์•ˆ๋…•ํ•˜์„ธ์š” @adams-sarah๋Š” ๋ถˆํ–‰ํžˆ๋„ ์ œ ํŽธ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ์ „ํžˆ Hercule(https://github.com/jamesramsay/hercule)์˜ ์‚ฌ์šฉ์„ ์ง€์ง€ํ•ฉ๋‹ˆ๋‹ค. ๊ฝค ์ž˜ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์œ ์ผํ•œ ๋‹จ์ ์€ Apiary.io์—์„œ ์—ฌ๋Ÿฌ ํŒŒ์ผ์„ ํŽธ์ง‘ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์–ด๋–ป๊ฒŒ๋“  ๋„์šธ ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”!

+1 hercule https://github.com/jamesramsay/hercule ์‚ฌ์šฉ
์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์ž ์‹œ ๋™์•ˆ ์‚ฌ์šฉํ•ด ์™”์œผ๋ฉฐ ์—ฌ์ „ํžˆ apib ์‚ฌ์–‘์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

:+1: ์ด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๋‹จ์ผ ๋ชฉ์ฐจ/์ƒ‰์ธ ๋ฐฉ๋ฒ•๋ก ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. Transclusion์€ ์•ฝ๊ฐ„ ๋„ˆ๋ฌด ์œ ์—ฐํ•˜๋ฉฐ ๋‚ด ๊ณผ๊ฑฐ ๊ฒฝํ—˜์—์„œ ๋Œ€๊ทœ๋ชจ Wiki ๊ธฐ๋ฐ˜ ๋ฌธ์„œ์—์„œ ํ™•์žฅ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์†Œ์Šค ๋งต์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ์ด๊ฒƒ์„ ํŒŒ์„œ ์ž์ฒด์— ๊ตฌ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋™์•ˆ Hercule ์‚ฌ์šฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๋Š” ์‹ค์ œ ์˜ˆ๋ฅผ ์ค€๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค โ€“ https://github.com/apiaryio/api.apiblueprint.org

@zdne json-schema(interagent/prmd๋ฅผ ํ†ตํ•ด) ์‚ฌ์šฉ์—์„œ ์šฐ๋ฆฌ๋Š” ๋ฆฌ์†Œ์Šค ๋ผ์ธ์„ ๋”ฐ๋ผ ๊ทธ๊ฒƒ์„ ๋ถ„ํ• ํ•˜๊ณ  ๊ธฐ๋ณธ์ ์œผ๋กœ ํฌํ•จ์„ ์•”์‹œํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์‹œํ–‰ํ•ฉ๋‹ˆ๋‹ค(์–ด๋Š ์ •๋„ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์„ ํฌํ•จํ•˜๋Š” ์ตœ์ƒ์œ„ ์Šคํ‚ค๋งˆ๋ฅผ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค. ํ•˜์œ„ ์Šคํ‚ค๋งˆ, ๊ทธ๋ž˜์„œ ๊ทธ๊ฒƒ์€ ์‚ฌ๋ฌผ์˜ ์ˆ˜์ค€์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค). ์ด๊ฒƒ์€ ๋ถ„๋ช…ํžˆ ์šฐ๋ฆฌ๊ฐ€ ํ•˜๊ณ  ์žˆ๋Š” ์ผ์— ๋งค์šฐ ์ „๋ฌธ์ ์ด๋ฉฐ ๊ท€ํ•˜์˜ ๊ฒฝ์šฐ์—๋Š” ํŠนํžˆ ์ ์ ˆํ•˜์ง€ ์•Š์ง€๋งŒ ์šฐ๋ฆฌ์˜ ๊ฒฝํ—˜์„ ๊ณต์œ ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์— ๋น„ํ•ด, ๋‚ด ์ƒ๊ฐ์— transclusion์€ ํ›จ์”ฌ ๋” ์šฐ์•„ํ•˜๊ณ  ์œ ์—ฐํ•ด ๋ณด์ด์ง€๋งŒ ํ†ตํ•ฉ๋œ TOC/index๋ฅผ ๊ฐ–๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ฐ„๋‹จํ•œ ์ˆ˜๋‹จ๋„ ๋ถ„๋ช…ํžˆ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ํ•œ ๊ฒƒ๊ณผ ๋น„์Šทํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ด ์ธ๋ฑ์Šค ์—ญํ• ์„ ํ•  uber ์ฒญ์‚ฌ์ง„์„ ๋งŒ๋“  ๋‹ค์Œ ๊ทธ ์•ˆ์— ํ•˜์œ„ ์ฒญ์‚ฌ์ง„์„ ์‚ฝ์ž…/์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์ž๋™์œผ๋กœ ์ผ์–ด๋‚˜๋Š” ์ข‹์€ ์ผ์ด์ง€๋งŒ ์›ํ•˜๋Š” ๋Œ€๋กœ ๋˜์ง€ ์•Š์œผ๋ฉด ์–ด์ƒ‰ํ•œ ๊ฒƒ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“ , ๊ทธ๊ฒƒ์ด ๋„์›€์ด๋œ๋‹ค๋ฉด ๋” ๋งŽ์€ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆ„๊ฑฐ๋‚˜ ๋‚ด ๊ฒฝํ—˜์„ ๊ณต์œ ํ•˜๊ฒŒ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์˜ ์ƒํƒœ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
์šฐ๋ฆฌ๋Š” Apiary.io์—์„œ Pro ํ”Œ๋žœ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

@DavidBM ์ €๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐœ์˜ apiary.apib ๋ฌธ์„œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ปดํŒŒ์ผ๋˜์ง€ ์•Š์Œ

apiary-source.apib - ํฌํ•จ ๊ธฐ๋Šฅ ์„ ์‚ฌ์šฉํ•˜๋Š” ์ปดํŒŒ์ผ๋˜์ง€ ์•Š์€ ์†Œ์Šค

FORMAT: 1A
HOST: https://api.example.com

# Hello World

<!-- include(blueprint/posts.apib) -->

์—ฎ๋‹ค

๋‹ค์Œ์„ ๊ฐ„๋‹จํžˆ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

aglio --input apiary-source.apib --compile --output apiary.apib

์ด์ œ apiary.apib ์— blueprint/posts.apib ์˜ ๋‚ด์šฉ์ด ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์˜ˆ, ํ•˜์ง€๋งŒ apiary.io์—์„œ ๋ฌธ์„œ๋ฅผ ํŽธ์ง‘ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ด๋ฏธ Hercule๊ณผ ํ•จ๊ป˜ ๋งž์ถคํ˜• ์†”๋ฃจ์…˜์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ์ง€๋งŒ ์šฐ๋ฆฌ๋ฅผ ์œ„ํ•ด ์–‘๋ด‰์žฅ ํ”„๋กœ๋ฅผ ์ง€๋ถˆํ•˜๋Š” ์š”์ ์€ ์ œํ’ˆ ๊ด€๋ฆฌ์ž๊ฐ€ git์— ์ž…๋ ฅํ•˜์ง€ ์•Š๊ณ  ๋ฌธ์„œ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ์—๊ฒŒ ์™„์ „ํžˆ ๋ฐฉํ•ด๊ฐ€ ๋ ๊นŒ๋ด ๋‘๋ ต๊ณ  ์ด๊ฒƒ์ด ํ•ด๊ฒฐ๋˜์ง€ ์•Š์œผ๋ฉด ์–‘๋ด‰์žฅ๊ณผ์˜ ๊ณ„์•ฝ์„ ์ทจ์†Œํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Hercule ๋ฐ ๊ธฐํƒ€ ๋„๊ตฌ๋ฅผ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ ํ›„ ์ด ์ƒํƒœ๊ฐ€ ๋  ๊ฒƒ์ด๋ผ๊ณ ๋Š” ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋งค์šฐ ์‹ค๋ง์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค :(

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„, ๋Šฆ๊ฒŒ ์™€์„œ ์˜ค๋ž˜๋œ ๋ฌผ๊ฑด์„ ๋‹ค์‹œ ์—ด๊ณ  ํŒŒ์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ ์žฅ์†Œ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ์ €๋ฅผ ์šฉ์„œํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฌ๋‚˜ ์ฒญ์‚ฌ์ง„ ๋ชจํ˜•์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ์—ฐ๊ตฌ๋ฅผ ํ•˜๋ฉด์„œ ์ด ํ† ๋ก ์„ ์ฐพ์•˜๊ณ  ์ด๊ฒƒ์ด ์ง€๊ธˆ๊นŒ์ง€ ๋‚ด๊ฐ€ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด ์‘๋‹ต์„ ๋ชจ๋ธ๋ณ„๋กœ ๋ถ„ํ• ํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์„ ๊ฒช๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. (. ๋ชจ๋ธ์„ ๋‹ค๋ฅธ ํด๋”๋กœ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?
๋‚ด ์ฒญ์‚ฌ์ง„ ํด๋” ์•ˆ์— ๋‚ด ๋ชจ๋“  ์š”์ฒญ์ด ์žˆ๊ณ , ์˜ˆ๋ฅผ ๋“ค์–ด ๋ถ„๋ฆฌ๋œ ๋ชจ๋ธ ํด๋”์— ๋‚ด ๋ชจ๋“  ์—”ํ‹ฐํ‹ฐ ๋ชจ๋ธ(MSON/MD/JSON/๋ฌด์—‡์ด๋“  ์ ํ•ฉํ•œ ํŒŒ์ผ)์„ ๋„ฃ์–ด ๋‹ค๋ฅธ ์‘๋‹ต์œผ๋กœ ์‰ฝ๊ฒŒ ์žฌ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋“ ์ง€์ด ์ž‘์—…์„ ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ ํ–ˆ์Šต๋‹ˆ๊นŒ?

์ด ๋ฌธ์ œ๊ฐ€ ์•ฝ๊ฐ„์˜ ๊ด€์‹ฌ์„ ๋Œ๋ฉด ์ •๋ง ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. API Blueprint์—๋Š” 26000์ค„์ด ์žˆ์œผ๋ฉฐ ๊ด€๋ฆฌํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” Dredd๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์•ฝ ํ…Œ์ŠคํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  Aglio๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ ์ด๊ฒƒ์ด ์ถ”๊ฐ€๋˜์–ด

๊ทธ ์ด์œ  ์ค‘ ํ•˜๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋””์ž์ธ์„ ๋งŽ์ด ๋ฐ˜๋ณตํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. :) ์ด ๋ฌธ์ œ๊ฐ€ ๊ณต๊ฐœ๋˜์—ˆ์„ ๋•Œ MSON์ด ์—†์—ˆ๊ณ  ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ํŠธ๋žœ์Šคํด๋ฃจ์ „๊ณผ ์ฐธ์กฐ์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ธฐ๋ก์„ ์œ„ํ•ด ๊ฑฐ๊ธฐ์— ๋ฌด์—‡์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋‹ค์ค‘ ํŒŒ์ผ ๊ด€๋ฆฌ ๋ฐ ๋‹จ์ผ ๋ฌธ์„œ ์ปดํŒŒ์ผ์ž…๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์—ฌ๋Ÿฌ API ์„ค๋ช… ๋ฌธ์„œ์—์„œ ๋ชจ๋ธ์˜ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ์„ฑ๊ณผ ๊ณต์œ  ๋น„ํŠธ ๋ฐ ์กฐ๊ฐ์— ๋Œ€ํ•ด์„œ๋„ ์ด์•ผ๊ธฐํ•ฉ๋‹ˆ๊นŒ?

๊ทธ ์ด์œ  ์ค‘ ํ•˜๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋””์ž์ธ์„ ๋งŽ์ด ๋ฐ˜๋ณตํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. :) ์ด ๋ฌธ์ œ๊ฐ€ ๊ณต๊ฐœ๋˜์—ˆ์„ ๋•Œ MSON์ด ์—†์—ˆ๊ณ  ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ํŠธ๋žœ์Šคํด๋ฃจ์ „๊ณผ ์ฐธ์กฐ์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ธฐ๋ก์„ ์œ„ํ•ด ๊ฑฐ๊ธฐ์— ๋ฌด์—‡์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋‹ค์ค‘ ํŒŒ์ผ ๊ด€๋ฆฌ ๋ฐ ๋‹จ์ผ ๋ฌธ์„œ ์ปดํŒŒ์ผ์ž…๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์—ฌ๋Ÿฌ API ์„ค๋ช… ๋ฌธ์„œ์—์„œ ๋ชจ๋ธ์˜ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ์„ฑ๊ณผ ๊ณต์œ  ๋น„ํŠธ ๋ฐ ์กฐ๊ฐ์— ๋Œ€ํ•ด์„œ๋„ ์ด์•ผ๊ธฐํ•ฉ๋‹ˆ๊นŒ?

์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ์˜ ๋์ ์—์„œ ์˜ค๋Š” ํ‘œ์ค€ ์‘๋‹ต์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ๋ณด๊ด€ํ•˜๊ณ  ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ทผ์ฒ˜์˜ ๋‹จ์ผ ์žฅ์†Œ์—์„œ ์ •์˜ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•˜๊ณ , ๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๊ฒƒ์— ์‘๋‹ตํ•ด์•ผ ํ•  ๋•Œ๋งˆ๋‹ค ๊ทธ๊ฒƒ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

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