API 仕様へのサンプルの追加

進行中のベータリリース​: クラウド IDE は進行中のベータリリースです。ベータ状態での Anypoint Code Builder の使用には、IDE で入手できる、該当するベータサービス契約条件が適用されます。

Exchange からの取得した、データ型と例の API フラグメントを American Flights API 仕様に追加します。その後、仕様の独自の例を作成し、応答のカスタムメッセージを追加します。

始める前に

American Flights API 仕様の設計のすべての手順を完了します。

Exchange からのフラグメントをプロジェクトに追加する

フラグメントをプロジェクトディレクトリに追加して、フラグメントを仕様に含めることができるようにします。

  • フライトの定義に対応するオブジェクトの ​Training: American Flight Data Type (トレーニング: American Flight データ型)​ フラグメント

  • API から返されるデータの ​Training: American Flights Example (トレーニング: American Flights の例)​ フラグメント

フラグメントを追加する手順は、次のとおりです。

  1. Anypoint Code Builder で American Flights API 仕様 (​american-flights-api.raml​) を開きます。

  2. コマンドパレットを開きます。

    手順を表示
    • キーボードショートカットを使用する。

      • Mac: Cmd+Shift+p

      • Windows: Ctrl+Shift+p

    • デスクトップ IDE で、​[View (表示)]​ > ​[Command Palette (コマンドパレット)]​ を選択する。

    • クラウド IDE で、​​ (メニュー) アイコンをクリックし、​[View (表示)]​ > ​[Command Palette (コマンドパレット)]​ を選択する。

  3. 次のコマンドを入力します。

    MuleSoft: Add fragment dependency from Exchange
  4. プロンプトが表示されたら、Anypoint Platform にログインして、アセットをダウンロードできるようにします。

  5. [Search for Asset (アセットを検索)]​ 項目で、追加するデータ型アセットの名前を指定します。

    Training: American Flight Data Type
  6. [Assets From Exchange (Exchange のアセット)]​ メニューからアセットを選択します。

  7. アセットの最新バージョン (​v1.0.1​ など) を選択します。

    IDE でフラグメントが連動関係として追加されます。プロセスが完了したら、[Explorer] の ​[Project Dependencies (プロジェクト連動関係)]​ 領域で ​AmericanFlightDataType.raml​ アセットを確認します。次に例を示します。

    "[Project Dependencies (プロジェクト連動関係) での Exchange からのフラグメント"]

    連動関係は、[Explorer] のプロジェクトディレクトリにある、プロジェクトの ​exchange.json​ ファイルにもリストされています。

  8. コマンドパレットから別のフラグメントを追加します。

    MuleSoft: Add fragment dependency from Exchange
  9. 追加するアセットの名前を指定します。

    Training: American Flights Example
  10. [American Flights Example (American Flights の例)]​ アセットの最新バージョンを選択します。

    IDE でフラグメントが連動関係として ​[Project Dependencies (プロジェクト連動関係)]​ および ​exchange.json​ に追加されます。

  11. 仕様にフラグメントを挿入する​に進みます。

仕様にフラグメントを挿入する

!include​ ディレクティブを使用してフラグメントを仕様に追加します。

  • AmericanFlight​ データ型は ​AmericanFlightDataType.raml​ で定義します。

  • AmericanFlightsExample.raml​ の例は、​get​ 要求に対する ​200​ 応答の例です。

フラグメントを含める手順は、次のとおりです。

  1. [Explorer] のプロジェクトディレクトリから ​american-flight-api.raml​ を開きます。

  2. 既存のコンテンツを次のコードで置き換えます。

    #%RAML 1.0
    title: American Flights API
    
    types: (1)
      AmericanFlight: !include exchange_modules/68ef9520-24e9-4cf2-b2f5-620025690913/training-american-flight-data-type/1.0.1/AmericanFlightDataType.raml
    
    /flights:
      get:
        queryParameters:
          destination:
            required: false
            enum:
              - SFO
              - LAX
              - CLE
        responses:
          200:
            body:
              application/json:  (2)
                type: AmericanFlight[]
                examples: (3)
                  output: !include exchange_modules/68ef9520-24e9-4cf2-b2f5-620025690913/training-american-flights-example/1.0.1/AmericanFlightsExample.raml
    
      post:
    
      /{ID}:
        get:
    1 !include​ を使用して、​AmericanFlightDataType.raml​ から ​AmericanFlight​ オブジェクトをデータ型として追加します

    組み込み関数を使用して、​!include​ ディレクティブと仕様ファイルからのファイルパスを挿入することもできます。次に例を示します。

    1. 「AmericanFlight: 」​ (末尾のスペースを含む) と入力したら、Ctrl+Spacebar をクリックし、​「!include」​の入力を開始して、RAML ファイルのドロップダウンメニューから ​[!include]​ を選択します。次に例を示します。

      RAML ドロップダウンメニューの Include ディレクティブ
    2. 同じプロセスに従って例を追加します。​exchange_modules​ ディレクトリを選択し、ステップごとに ​AmericanFlightsDataType.raml​ まで進みます。次に例を示します。

      RAML ドロップダウンメニューに含まれるパス
    2 JSON (​application/json​) へのレスポンスボディの形式を設定し、応答の種別を ​AmericanFlight​ オブジェクトの配列 (​AmericanFlight[]​) として設定します
    3 AmericanFlightsExample.raml​ の例を追加します
  3. フライト ID による Get 要求の例を作成して含める​に進みます。

フライト ID による Get 要求の例を作成して含める

post 応答の例を作成して仕様に含めます。

  1. [Explorer] で空の領域を右クリックして、​examples​ という名前のフォルダーを作成します。

    コンテキストメニュー内で強調表示されている [New Folder (新規フォルダー)] オプション
  2. examples​ フォルダーを右クリックして、​AmericanFlightExample.raml​ という名前の新しいファイルを作成します。

    強調表示された AmericanFlightExample.raml ファイル
  3. 開いているファイルで次の例を追加します。

    #%RAML 1.0 NamedExample
    value:
        ID: 1
        code: ER38sd
        price: 400
        departureDate: 2017/07/26
        origin: CLE
        destination: SFO
        emptySeats: 0
        plane:
          type: Boeing 737
          totalSeats: 150
  4. american-flights-api.raml​ ファイルに戻り、応答の ​/{ID}/get​ の下に一連の要素を作成します。

    #%RAML 1.0
    title: American Flights API
    
    types:
      AmericanFlight: !include exchange_modules/68ef9520-24e9-4cf2-b2f5-620025690913/training-american-flight-data-type/1.0.1/AmericanFlightDataType.raml
    
    /flights:
      get:
        queryParameters:
          destination:
            required: false
            enum:
              - SFO
              - LAX
              - CLE
        responses:
          200:
            body:
              application/json:
                type: AmericanFlight[]
      post:
    
      /{ID}:
        get:
          responses: (1)
            200:
              body: (2)
                application/json:
                  type: AmericanFlight
                  examples: (3)
                    output: !include examples/AmericanFlightExample.raml
    1 200​ コードの応答を追加します
    2 get​ リクエストボディの JSON 形式と種別 (​AmericanFlight​) を指定します
    3 /examples​ ディレクトリからの例をリクエストボディのコンテンツとして追加します
  5. Post メソッドの例を作成する​に進みます。

Post メソッドの例を作成する

post​ 要求の例を定義します。

  1. /flights:post​ メソッドへの要求では ​AmericanFlight​ 種別のオブジェクトが必要であることを指定します。

    #%RAML 1.0
    title: American Flights API
    
    types:
      AmericanFlight: !include exchange_modules/68ef9520-24e9-4cf2-b2f5-620025690913/training-american-flight-data-type/1.0.1/AmericanFlightDataType.raml
    
    /flights:
      get:
        queryParameters:
          destination:
            required: false
            enum:
              - SFO
              - LAX
              - CLE
        responses:
          200:
            body:
              application/json:
                type: AmericanFlight[]
      post:
        body: (1)
          application/json:
            type: AmericanFlight (2)
    
      /{ID}:
        get:
          responses:
            200:
              body:
                application/json:
                  type: AmericanFlight
                  examples:
                    output: !include examples/AmericanFlightExample.raml
    1 post​ メソッドの JSON 形式のボディを指定します
    2 AmericanFlight​ を ​post​ メソッドの種別として設定します
  2. /examples​ フォルダーの下に ​AmericanFlightNoIDExample.raml​ という名前のファイルを作成し、そのファイルに次の例をコピーします。

    #%RAML 1.0 NamedExample
    value:
        code: ER38sd
        price: 400
        departureDate: 2017/07/26
        origin: CLE
        destination: SFO
        emptySeats: 0
        plane:
          type: Boeing 737
          totalSeats: 150

    新しいフライトレコードをシミュレートするために、この例では ​ID​ パラメーターを提供していません。

  3. american-flights-api.raml​ ファイルで、この例を ​post​ メソッドへの応答として追加し、カスタムメッセージを含めます。

    5 の ​!include​ ディレクティブに注意してください。
    #%RAML 1.0
    title: American Flights API
    
    types:
        AmericanFlight: !include exchange_modules/68ef9520-24e9-4cf2-b2f5-620025690913/training-american-flight-data-type/1.0.1/AmericanFlightDataType.raml
    
    /flights:
      get:
        queryParameters: (1)
          destination:
            required: false
            enum:
              - SFO
              - LAX
              - CLE
        responses: (2)
          200:
            body:
              application/json:
                type: AmericanFlight[]
                examples:
                  output: !include exchange_modules/68ef9520-24e9-4cf2-b2f5-620025690913/training-american-flights-example/1.0.1/AmericanFlightsExample.raml
    
      post:
        body:
          application/json:
            type: AmericanFlight
            examples: (3)
              input: !include examples/AmericanFlightNoIDExample.raml
        responses:
          201:
            body:
              application/json: (4)
                example:
                  message: Flight added (but not really)
    
      /{ID}:
        get:
          responses:
            200:
              body:
                application/json: (5)
                  type: AmericanFlight
                  examples:
                    output: !include examples/AmericanFlightExample.raml
    1 目的地を選択します。
    2 この目的地の ​AmericanFlight​ オブジェクトの配列を返します。
    3 examples/AmericanFlightNoIDExample.raml​ から ​AmericanFlight​ オブジェクトを投稿します。
    4 post​ メソッドへの JSON 形式の応答でカスタムメッセージを指定します
    5 examples/AmericanFlightExample.raml​ からの例をネストされた ​get​ 要求への応答として追加します
  4. test-api-specification.adocに進み、API エンドポイントをテストします。