8

次のような resourceType を宣言するときに、RAML がさまざまなスキーマを動的に参照できる方法が気に入っています。

resourceTypes:
  - collection:
      get:
        responses:
          200:
            body:
              application/json:
                schema: <<schema>>
      post:
        body:
          application/json:
            schema: <<schema>>Create
        responses:
          200:
            body:
              application/json:
                schema: <<schema>>

ここで私はこれを次のように使用できます

/users:
  type: { collection: { schema: user } }

また、RAML はuserGET と POST からのスキーマ応答を提供し、userCreatePOST 要求の送信にもスキーマを使用します。涼しい!これで、大量の異なるスキーマでコレクション定義を再利用できます。

<<schema>>しかし、すべてのサンプルjsonも必要になったので、別の方法でvarを利用して「コードの再利用」を活用したいと考えていました。できることを願っていた

resourceTypes:
  - collection:
      get:
        responses:
          200:
            body:
              application/json:
                schema: <<schema>>
                example: examples/v1-<<schema>>.json
      post:
        body:
          application/json:
            schema: <<schema>>Create
            example: examples/v1-<<schema>>-create.json
        responses:
          200:
            body:
              application/json:
                schema: <<schema>>
                example: examples/v1-<<schema>>.json

残念ながら、これは機能しません。というエラーが表示されます

error: File with path "/examples/v1-%3C%3Cschema%3E%3E.json" does not exist

したがって、これをすべてのコレクションに手動で追加することに頼り、/users上記の例は次のようになりました

/users:
  type: { collection: { schema: user } }
  get:
    responses:
      200:
        body:
          application/json:
            example: !include examples/v1-user.json
  post:
    body:
      application/json:
        example: !include examples/v1-user-create.json
    responses:
      200:
        body:
          application/json:
            example: !include examples/v1-user.json

私にとって、これは例を追加するだけでもかなりのオーバーヘッドです。特に、多くのリソースでパターンを繰り返したい場合。

質問:これを達成する方法はありますか?

4

2 に答える 2

0

RAML は単なる標準であるため、最初に質問します: 誰が/何がそのエラーをスローしているのか? (つまり、どのツールを使用しているのですか?) さらに: 例 (最初の例) について本当によろしいですか? !include を使用していないため、その存在しないファイルに到達するつもりはありません (元のスクリプトで !includes を使用していると想定していますが、ここにコピーするときはそれを省略しました)。

さらに、あなたがこれを求めているわけではないことはわかっていますが、念のため: - 2 つのパラメーター (回避策として) を渡すことができます。- 予約パラメータについて知っていますか? + 場合によって「単数化」または「複数化」を使用すると、企業の再利用にも役立ちます ;) http://raml.org/docs-200.html#parametersをご覧ください

于 2014-12-15T15:16:22.140 に答える