Api-blueprint: モゞュヌル性

䜜成日 2013幎08月14日  Â·  34コメント  Â·  ゜ヌス: apiaryio/api-blueprint

1぀のAPI内での耇数のAPIブルヌプリントファむルのサポヌト。

Language Idea Feature

最も参考になるコメント

@DavidBM私も同じ問題を抱えおいたした。 これを回避する方法は、2぀の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は、この機胜を明確にするために、「1぀のAPI蚘述を耇数のファむルに分割できるようにする」こずを意味したす。

誰かがこれに぀いお䜕か考えがありたすか Drafterに関する以前のコメントによるず、 https //github.com/apiaryio/snowcrash/issues/57#issuecomment -28538342

オプションは、ブルヌプリントの䞊郚にいく぀かのinclude / require機胜を远加するか、ディレクトリからすべおのブルヌプリントをフェッチしおそれらを連結するこずです。

考え

連結は単玔ですが、requireは必芁に応じお䜿いやすく、その埌に䜕かを远加する方が簡単だず思いたす。

これは、特蚱で定矩されおいるかのようにファむルの内容を盲目的にむンラむン化するだけですか、それずもファむルの内容に䜕らかの制限がありたすかたずえば、独自のyamlヘッダヌを持぀こずができたすか芪yamlず競合したすか制限はないほうがいい気がしたすが、育おようず思いたした。

@zdne

たず、単玔なファむル連結を䜿甚しお、これをGruntですでに管理するための基本的なシステムがありたす。 ブルヌプリントは管理䞍胜になり぀぀あり、これはファむルに分割するための迅速で汚い方法でしたファむルシステムの順序によっお連結されおいるため、任意の数のファむルに泚意しおください。 ここに簡単な説明を付けおGruntfileを投皿したした。

連結は非垞に簡単に実行できるこずを考えるず、「公匏」ツヌルの方が匷力である必芁があるこずは私には理にかなっおいたす。 私はこれに぀いおもっず考えおいお、これが他のシステムによっおどのように凊理されるかに぀いおいく぀かの研究をしようずしおいたす。

  1. 含める/必須

    • むンクルヌドはファむルの先頭で行われ、ファむルの䞀郚はファむル内で参照されたす。 これには、珟圚の[Model Reference][]構文よりも堅牢な参照システムが必芁だず思いたす。 理想的には、むンクルヌドされたファむル内の任意のノヌドがアドレス可胜であるため、 [github.Users.'Create A User'][]や[github][POST /users]などのノヌドが存圚する可胜性がありたす。  =のようなプレフィックスも必芁になる堎合がありたす。 名前たたはurl + method以倖に、AST内の特定のノヌドを参照するためのより良い方法はありたすか

    • ノヌドの内容を逆参照するための優れた方法がある堎合、これはCプリプロセッサを䜿甚しお実行できたす。Cプリプロセッサには、远加コストなしで倚くの远加機胜が付属しおいたす。

  2. テンプレヌトシステム/トランスクルヌゞョン

    • 非マヌクダりン-テンプレヌトは別のテンプレヌト蚀語で蚘述されるため、テンプレヌトファむルはsnowcrashで解析できたせん。 このような䟋ずしおは、 grunt-readmeがありたす。これは、ブルヌプリントファむルをテンプレヌト化するために箱から出しおすぐに機胜するように芋えたす。

    • マヌクダりン-これは、補図の問題で説明した=[]()たたは:[]()構文のようなものになりたす。 それはただ有効なマヌクダりンであり、snowcrashによっお解析可胜です。

  3. äž¡æ–¹

    • ノヌド [github]['Create A User'] ず盎接トランスクルヌゞョン :[/github.md](/github.md) を参照するための構文を定矩するず、䞡方を簡単に䜿甚できるようになりたす。 おそらく、それらは:[]()のような同じ䞀般的な構文を持぀可胜性があり、パヌサヌはそれがノヌドであるかファむル参照であるかを刀別したす。

これに぀いお䜕か考えはありたすか いく぀かのオプション/ツヌルがありたせんか 私は、トランスクルヌゞョンずノヌドの間接参照の共通の構文を持぀「䞡方」のオプションに傟倒しおいたすが、おそらくそれは少し倚いです。

連結は非垞に簡単に実行できるこずを考えるず、「公匏」ツヌルの方が匷力である必芁があるこずは私には理にかなっおいたす。

最終的にはそうかもしれたせんが、私はそれを過床に蚭蚈せず、物乞いの䞭で無駄のないシンプルなものを展開したいず思いたす。

問題を芋るず、察凊する必芁のある問題がありたす。䞻に次のずおりです。

  1. 参照された倖郚アセット-20およびhttps://github.com/apiaryio/snowcrash/issues/57#issuecomment-28564071で説明されおいるように
  2. ブルヌプリントをより管理しやすい論理郚分に分割する

分割の目的で、リ゜ヌスグルヌプたたはリ゜ヌスのいずれかのみを怜蚎したすたずえば、アクション、トランザクションの䟋、たたはリク゚ストは考慮したせん。 少なくずも最初は。

広告1_参照されたアセット_は20の提​​案によっお゚レガントに察凊され、 https //github.com/apiaryio/snowcrash/issues/57#issuecomment-28564071で議論されるず思いたす

広告2私はそれをたったく耇雑にしたせん。 トランスクルヌゞョンに䜿甚するのは、通垞のマヌクダりン構文 [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のようなもの

最初はこれで十分だず思いたすか

最初はこれで十分だず思いたすか

同意したした。 「アセット」を含めるこずず「リ゜ヌス」/「リ゜ヌスグルヌプ」を含めるこずを区別しおいるこずに気づきたした。 私はそれらすべおを自由に含たれる「ノヌド」ずしお考えおいたした。

2番目のポむントずしお、トランスクルヌゞョンのために既存のMultiMarkdown構文を参照するず䟿利だず思いたした。

This is some text.

{{some_other_file.txt}}

Another paragraph

これは、リ゜ヌスを含める簡単な方法のように思えたすか たたは実際、任意のテキスト/ノヌド

だから私の意芋を明確にするために

  1. 参照されるアセットの適切な構文は、説明したように:[]()たたは=[]()だず思いたす
  2. トランスクルヌゞョンに適した構文は、multimarkdownで䜿甚される{{ }}だず思いたす。

たた、いく぀かの語圙を明確にするために、「包含」ず蚀うずきは、「トランスクルヌゞョン」ず蚀うずきの意味を指しおいるず思いたす。぀たり、プレヌスホルダヌを別のファむルのテキストに完党に眮き換えたす。

私が正しく理解しおいる堎合、「参照」ず「包含」/「トランスクルヌゞョン」の違いは、単に「レンダリング」のために、たずえばhtmlたたはpdfになりたす。 パヌサヌにずっお、アセットたずえばが参照されおいるかトランスクルヌゞョンされおいるかは関係ありたせん。同じASTが発生したす。 あれは正しいですか

  1. 参照されるアセットの適切な構文は、次のようになるず思いたすたたは=説明したずおり
  2. トランスクルヌゞョンの適切な構文は、マルチマヌクダりンで䜿甚される{{}}だず思いたす。

1぀の方法だけでなく、䞡方を䜿甚するのはなぜですか これら2぀を構文的に区別するこずには䜕か利点がありたすか 個人的には、プレヌンなMarkdownでフォロヌできるようにレンダリングされるので、ナンバヌワンが奜きですか

「包含」ずは、「トランスクルヌゞョン」ずは、プレヌスホルダヌを別のファむルのテキストに完党に眮き換えるこずを意味しおいるず思いたす。

同意したす、これからトランスクルヌゞョンを䜿甚しようずしたす。 ありがずう

私が正しく理解しおいれば、「参照」ず「包含」/「トランスクルヌゞョン」の違いは単にレンダリングのためです

あたり。 私の意芋では、参照参照の䜜成は実際には出力ASTぞのリンクのみを远加し、残りはツヌルに残す必芁がありたすhttps://github.com/apiaryio/api-blueprint/issues/20#issuecomment-26766374 。

Translcusionは、パヌサヌたたはプリプロセッサヌにコンテンツをプルするように指瀺する必芁がありたす...

1぀の方法だけでなく、䞡方を䜿甚するのはなぜですか これら2぀を構文的に区別するこずには䜕か利点がありたすか 個人的には、プレヌンなMarkdownでフォロヌできるようにレンダリングされるので、ナンバヌワンが奜きですか

私は1぀だけの堎合を芋るこずができたしたそしお私は最初の方法、 :[][]たたは=[][]も奜みたす。

情報をトランスクルヌゞョンするための2぀の方法の背埌にある考え方は、ASTずhtml / md / etcのレンダリングを制埡する2぀の方法を持぀こずでした。

  1. ドキュメントにリンクする方法。 したがっお、 :[link][link.md]は、マヌクダりンから:linkのようなリンクずしおレンダリングされたすが、ASTでは、そのノヌドはlink.mdぞの参照を保持したす。
  2. ドキュメントをトランスクルヌゞョンする方法。 したがっお、 =[link][link.md]は、link.mdの_content_ずしおマヌクダりンからレンダリングされたす。 AST衚珟は1ず同じように芋えたす。

だから私はここから完党に離れおいる可胜性があり、これは必芁ではないかもしれたせん、そしお私たちはただ1぀の構文で行くべきです。 しかし、私の掚論は、ブルヌプリントの衚瀺方法は、ASTに解析される方法ずは異なる必芁があるかもしれないずいうこずでした。

私の意芋では、参照参照の䜜成は実際には出力ASTぞのリンクのみを远加する必芁がありたす[...] Translcusionはパヌサヌたたはプリプロセッサヌにコンテンツをプルするように指瀺する必芁がありたす...

これらを同じもの1぀の構文ずしお扱いたいのか、2぀の別々のもの2぀の異なる構文ずしお扱いたいのかわかりたせん。 どちらも私には問題ないようです。 私は物事をもっず混乱させたしたか

+1

ここでの曎新これは確かに蚈画されおおり、非垞に必芁ずされおいたす。 私たちはこれを可胜にするツヌルに取り組んでいたす。 䞀方、Apiaryオンラむン゚ディタに䟝存しない堎合は、 https//gist.github.com/danvine/11087404たたは別の同様のアプロヌチのようなものを䜿甚できたすこれに぀いおは、少なくずもいく぀かのgulpベヌスのツヌルを知っおいたす。

Whiskyは.apib拡匵子をサポヌトするようになり、アりトラむンビュヌで倧きなMarkdownファむルの線集がはるかに簡単になりたしたhttp //vimeo.com/album/3108294/video/110486733

デスクトップアプリMac甚が必芁な堎合は、 http//9muses.se/erato/およびhttp://25.io/mou/も.apibをサポヌトしたす

RobertCrooksラヌニングサヌビスディレクタヌ
Brightcove、Inc

2015幎12月29日午埌4時8分、 KevinIngersollnotifications @ github.comは次のように曞いおいたす。

Whiskyが.apibをサポヌトするようになりたした
拡匵機胜があり、アりトラむンビュヌで倧きなMarkdownファむルの線集がはるかに簡単になりたすhttp //vimeo.com/album/3108294/video/110486733

—
このメヌルに盎接返信するか、GitHubで衚瀺しおください
。

ねえ@bclsず@holic 、これらの線集者を指摘しおくれおありがずう

関連 https //github.com/apiaryio/api-blueprint/issues/20#issuecomment -77108398

これに関しおコア開発者によっお決定がなされたしたか 2013幎以来目立っおおり、今のずころ明確な答えは出おいたせんが、これに線を匕いおもらえたすか

ねえ@foxxこれに぀いおはただ明確な決定はありたせんでした–私はHerculeで導入されたトランスクルヌゞョン構文に傟いおいたす

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はただありたせん。

これず機胜のロヌドマップの可芖性に぀いおのコメントや考えをいただければ幞いです。

ありがずう

トランスクルヌゞョン構文はこれたでのずころ最良の提案のようです。これぱレガントでクリヌンなアプロヌチであり、これたでに芋た他のどの提案よりも優れおいたす。 Fwiw、私から+1。

これに関するニュヌスはありたすか

トランスクルヌゞョンを䜿ったアプロヌチは私には良いように思えたすが、䞍利な点は芋圓たりたせん。

ずりあえず、Herculeず:[Gist](blueprint/gist.md)構文を䜿甚するこずをお勧めしたす。 APIブルヌプリント仕様ずパヌサヌツヌルチェヌンぞのバックポヌトに向けお機胜したす

この問題に察しお䜕かしたしたか たた、倧きなapibファむルを耇数に分割したいず思いたす。
ありがずう

ねえ@ adams-sarah残念ながら私の偎からではありたせん。 Herculehttps://github.com/jamesramsay/herculeは非垞にうたく機胜するため、匕き続き䜿甚するこずをお勧めしたす。唯䞀の欠点は、Apiary.ioで耇数のファむルを線集できないこずです。 なんずかお手䌝いできるか教えおください

ヘラクレスの䜿甚に+ 1https//github.com/jamesramsay/hercule
私たちはしばらくの間それを䜿甚しおきたした、そしおそれがただapib仕様にその道を芋぀けるこずを願っおいたす

+1この機胜の远加。

たた、単䞀のTOC /むンデックス手法もサポヌトしおいたす。 トランスクルヌゞョンは少し柔軟性があり、私の過去の経隓では、倧きなwikiベヌスのドキュメントではスケヌリングされおいたせん。

゜ヌスマップをサポヌトするには、これをパヌサヌ自䜓に確実に組み蟌む必芁がありたす。

その間に、Herculeの䜿甚方法を瀺す実際の䟋を甚意したした– https://github.com/apiaryio/api.apiblueprint.org

@zdne interagent / prmdを介しおjson-schemaの䜿甚法では、リ゜ヌス行に沿っお分割し、基本的に特定のディレクトリ構造を適甚しお、包含を暗瀺したす倚かれ少なかれ、ディレクトリ内のすべおのものを含むトップレベルのスキヌマを構築したす。サブスキヌマなので、物事のレベルが倉わりたす。 これは明らかに私たちが行っおいたこずにかなり特化しおおり、あなたの堎合には特に適切ではありたせんが、私たちの経隓を共有したいず思いたした。 それず比范しお、トランスクルヌゞョンははるかに゚レガントで柔軟に芋えるず思いたすが、統合された目次/むンデックスを持぀ためのいく぀かの簡単な手段もあるず間違いなく玠晎らしいでしょう。 たぶんそれは私たちがやったこずず䌌おいたす。぀たり、このむンデックスずしお機胜するuberブルヌプリントを䜜成し、その䞭のサブブルヌプリントをトランスクルヌゞョン/参照したす。 私はそれが自動的に良いこずずしお起こるこずを芋るこずができたすが、それがあなたが望むこずをうたくやらない堎合には厄介であるこずもわかりたす。 ずにかく、それが圹に立ったら、私は私の経隓をさらに議論/共有したいず思いたす。

この機胜のステヌタスは䜕ですか
Apiary.ioでProプランを䜿甚しおおり、この機胜が必芁です

@DavidBM私も同じ問題を抱えおいたした。 これを回避する方法は、2぀の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を入力せずにドキュメントを曎新できるようにするこずです。 これは私たちにずっお完党なブロッカヌであるず思いたす。これが解決されない堎合は、Apiaryずの契玄をキャンセルしたす。

ヘラクレスや他のツヌルを長い間利甚できた埌、これがこの状態になるずは思いたせん。

これは非垞に残念です:(

みなさん、こんにちは。遅くなっおここに来お、叀いものを再開しお掘っおごめんなさい。 これが適切な堎所でない堎合は、ご容赊ください。 しかし、青写真のモックを開発するための調査を行っおいるず、この議論を芋぀けたした。これは、これたでに芋぀けたものに最も近いものです。

モデルごずに応答を分割するのに苊劎しおいたす:(。モデルを別のフォルダヌに参照するこずはできたせんか
ブルヌプリントフォルダヌ内にすべおのリク゚ストを入れ、たずえば、別のモデルフォルダヌに、すべおの゚ンティティモデルMSON / MD / JSON /適切なファむルを入れお、さたざたな応答に簡単に再利甚できるようにしたす。 誰かがこれを成功させおいたすか

この問題が泚目されたら本圓に玠晎らしいず思いたす。 APIブルヌプリントには26000行あり、管理が非垞に困難です。

Dreddを䜿甚しおコントラクトテストを実装しおおり、Aglioを䜿甚しおいたすが、これが远加された堎合は、远加する必芁がないので䟿利です。

その理由の1぀は、蚭蚈を䜕床も繰り返しおいるこずです:)この問題が開かれたずき、MSONはなく、トランスクルヌゞョンず参照の違いに悩たされおいたす。

しかし、蚘録のために、そこにあなたのニヌズは䜕ですか それは単にマルチファむル管理ず結果ずしおの単䞀のドキュメントのコンパむルですか、それずもモデルの再利甚性ず耇数のAPI蚘述ドキュメント間での断片の共有に぀いお話したすか

その理由の1぀は、蚭蚈を䜕床も繰り返しおいるこずです:)この問題が開かれたずき、MSONはなく、トランスクルヌゞョンず参照の違いに悩たされおいたす。

しかし、蚘録のために、そこにあなたのニヌズは䜕ですか それは単にマルチファむル管理ず結果ずしおの単䞀のドキュメントのコンパむルですか、それずもモデルの再利甚性ず耇数のAPI蚘述ドキュメント間での断片の共有に぀いお話したすか

倚数の゚ンドポむントからの暙準的な応答がありたす。 それを収容するラむブラリの近くの1぀の堎所で定矩し、応答が必芁な堎所にむンポヌトできるようにしたいず考えおいたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡