OAS API、RAML API、および GraphQL API の実装

logo cloud IDE Cloud IDE

logo desktop IDE Desktop IDE

これは進行中のベータリリースです。ベータ状態での Anypoint Code Builder の使用には、該当するベータサービス契約条件が適用されます。

API 仕様を作成したら、Anypoint Code Builder を使用して API を実装プロジェクト (Mule アプリケーション) にスキャフォールディングします。

Anypoint Code Builder は、Exchange からプロジェクトの連動関係としてインポートする OAS または JSON スキーマフラグメントを参照するスキャフォールディング API 仕様をサポートしていません。 代わりに、仕様内でインラインでフラグメントを指定するか、プロジェクトディレクトリ内で手動で作成したフラグメントファイルを通じて、そのようなフラグメントを含む仕様をスキャフォールディングできます。Exchange の RAML フラグメントは、この制限の影響を受けません。

Anypoint Code Builder では、仕様で定義された情報を使用して実装プロジェクトの基本インターフェースを自動生成します。 このインターフェースには、各エンドポイントのフロー、XML ベースの組み込みルーター、エラーハンドラーが含まれており、それらをその後 Mule アプリケーション内に実装します。

API を実装するために使用するプロセスは、すでにインテグレーションプロジェクトを作成しているか Exchange に仕様をパブリッシュしているかによって異なります。

API をスキャフォールディングしてインテグレーションプロジェクトを作成する

インテグレーションプロジェクトをまだ作成していない場合は、Anypoint Code Builder を使用して API を新しい Mule プロジェクトにスキャフォールディングします。

  1. IDE のアクティビティバーで、​​ (​Anypoint Code Builder​) アイコンをクリックします。

    アクティビティバー内で強調表示されている [Anypoint Code Builder] アイコン
  2. [Quick Actions (クイックアクション)]​ から ​[Implement an API (API を実装)]​ をクリックします。

    *[Getting Started (使用開始)]* セクション内の強調表示された *[Implement an API (API を実装)]* リンク
  3. [Implement an API Specification (API 仕様を実装)]​ フォームに入力します。

    項目名 Field Value (項目値)

    Project Name (プロジェクト名)

    プロジェクトの一意の名前。

    この名前はタイトルおよびプロジェクトファイルの名前として使用されます。 たとえば、プロジェクト名が「OAS Integration」 (OAS インテグレーション) の場合、プロジェクトファイル名は ​oas-integration​ になります。

    Project Location (プロジェクトの場所)

    ホームディレクトリまたは作成する別のディレクトリ。

    ホームディレクトリへのフォルダーの追加」を参照してください。

    別のプロジェクトディレクトリ内にプロジェクトを作成しないでください。

    Show filters (検索条件を表示)

    詳細は、検索結果の絞り込みを参照してください。

  4. Exchange で API 仕様を検索します。

    1. API 仕様の名前の入力を開始します。

    2. Enter キーを押して、可能な結果のリストを表示します。

    3. [Add Asset (アセットを追加)]​ をクリックして、選択した API 仕様を追加します。

      Exchange の API を検索する

      選択した API 仕様がフォームに表示されます。次に例を示します。

      "[Implement an API Specification (API 仕様を実装) フォームで選択された [OAS Example (OAS 例)] API"]

  5. [Create Project (プロジェクトを作成)]​ をクリックします。

    プロジェクトを作成すると、Anypoint Code Builder で次の操作が実行されます。

    • プロジェクトの ​pom.xml​ ファイルに API 仕様を連動関係として追加します。

      <dependency>
          <groupId>e91cab06-650b-4634-9c6f-5bc4f4fc4d17</groupId>
          <artifactId>OAS-Example</artifactId>
          <version>1.0.1</version>
          <classifier>oas</classifier>
          <type>zip</type>
      </dependency>
    • API を新しいインテグレーションプロジェクトにスキャフォールディングして、設定 XML ファイルを開きます。

      設定 XML ファイルには、仕様の各エンドポイントのフロー、エラーハンドラー、組み込みルーターを含む、インテグレーションプロジェクトのインターフェースが含まれます。次に例を示します。

      Anypoint Code Builder での OAS インテグレーション例 この例には以下が含まれます。

      • メインフロー

      • 組み込みルーターを含む HTTP リスナー

      • いくつかのエラーハンドラー

      GraphQL API の場合、Anypoint Code Builder では、各 Mule フローのソースとしてデータフェッチャー (​<graphql-router:data-fetcher>​) も作成されます。 データフェッチャーについての詳細は、「​GraphQL API の実装 tutorial for an example GraphQL API and データソースへの GraphQL API のマッピング​」を参照してください。

Mule アプリケーション内でインターフェースを実装できるようになりました。

API 仕様を既存の実装プロジェクトにインポートする

すでに​インテグレーションプロジェクトを作成​している場合、Exchange から仕様をインポートすることで API をスキャフォールディングできます。 この場合、Anypoint Code Builder では、インテグレーションプロジェクトのインターフェース用の個別の設定 XML ファイルが作成されます。

  1. Anypoint Code Builder の [Explorer] ビューで、​my-project-name​ などのインテグレーションプロジェクトを開きます。

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

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

      • Mac: Cmd+Shift+p

      • Windows: Ctrl+Shift+p

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

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

  3. 「import」​と入力し、次のコマンドを選択します。

    MuleSoft: Import Asset from Exchange
  4. API 仕様の言語に応じて異なります。

    • OAS または RAML では ​Rest API

    • GraphQL API

  5. プロンプトが表示されたら、​[Allow (許可)]​ をクリックして、Anypoint Platform を使用したサインインを許可し、ビジネスグループを選択します。

  6. API 仕様の名前 (​「OAS Example」​ (OAS 例) など) を入力して Enter キーを押します。

  7. 名前に一致するアセットのリストが IDE に読み込まれるまで待機します。

    [Assets from Exchange (Exchange のアセット)] ドロップダウン
  8. インポートする API 仕様を選択します。

  9. プロンプトで、API 仕様のバージョン (​v1.0.1​ など) を選択します。

  10. API 連動関係をスキャフォールディングするように促されたら、​[Yes (はい)]​ を選択します。

    API 連動関係をスキャフォールディングすると、Anypoint Code Builder では次の操作が実行されます。

    • プロジェクトの ​pom.xml​ ファイルに API 仕様を連動関係として追加します。

      <dependency>
          <groupId>e91cab06-650b-4634-9c6f-5bc4f4fc4d17</groupId>
          <artifactId>OAS-Example</artifactId>
          <version>1.0.1</version>
          <classifier>oas</classifier>
          <type>zip</type>
      </dependency>
    • 新しい設定 XML ファイル (​oas-example.xml​ など) をプロジェクトに追加します。

      [Explorer] ビューでの新規設定ファイル

      新しい設定 XML ファイルには、仕様の各エンドポイントのフロー、エラーハンドラー、組み込みルーターを含む、インテグレーションプロジェクトのインターフェースが含まれます。次に例を示します。

      Anypoint Code Builder での OAS インテグレーション例

      この例には以下が含まれます。

      • メインフロー

      • 組み込みルーターを含む HTTP リスナー

      • いくつかのエラーハンドラー

      GraphQL API の場合、Anypoint Code Builder では、各 Mule フローのソースとしてデータフェッチャー (​<graphql-router:data-fetcher>​) も作成されます。 データフェッチャーについての詳細は、「​GraphQL API の実装 tutorial for an example GraphQL API and データソースへの GraphQL API のマッピング​」を参照してください。

Mule アプリケーション内でインターフェースを実装できるようになりました。

インターフェースファイルを調べる

API 仕様をインターフェースにスキャフォールディングしたら、UI キャンバスと設定 XML でインターフェースのスキャフォールディング済みフローとエラーハンドラーを調べます。

キャンバスでのスキャフォールディング済みフロー
  1. [Explorer] ビューで、目的のインターフェースの設定 XML ファイルを開きます。

  2. キャンバス UI が自動的に開かない場合は、アクティビティバーの​​ (​Show Mule graphical mode (Mule グラフィカルモードを表示)​) アイコンをクリックしてキャンバス UI を開きます。

  3. [Flow List (フローリスト)]​ をクリックして、フロー間を移動します。

    [Flow List (フローリスト)] の例
  4. 設定 XML で、API 仕様のエンドポイント用に作成したフローを見つけます。

    フローの例
        <flow name="oas-example-console">
            <http:listener config-ref="oas-example-httpListenerConfig" path="/console/*">
                <http:response statusCode="#[vars.httpStatus default 200]">
                    <http:headers>#[vars.outboundHeaders default {}]</http:headers>
                </http:response>
                <http:error-response statusCode="#[vars.httpStatus default 500]">
                    <http:body>#[payload]</http:body>
                    <http:headers>#[vars.outboundHeaders default {}]</http:headers>
                </http:error-response>
            </http:listener>
            <apikit:console config-ref="oas-example-config" />
            <error-handler>
                <on-error-propagate type="APIKIT:NOT_FOUND">
                    <ee:transform doc:name="Transform Message">
                        <ee:message>
                            <ee:set-payload><![CDATA[%dw 2.0
    output application/json
    ---
    {message: "Resource not found"}]]></ee:set-payload>
                        </ee:message>
                        <ee:variables>
                            <ee:set-variable variableName="httpStatus">404</ee:set-variable>
                        </ee:variables>
                    </ee:transform>
                </on-error-propagate>
            </error-handler>
        </flow>
  5. 自動的に生成されたエラーハンドラーコンポーネントを確認します。

    エラーハンドラーコンポーネントの例
    <apikit:console config-ref="oas-example-config" />
        <error-handler>
            <on-error-propagate type="APIKIT:NOT_FOUND">
                <ee:transform doc:name="Transform Message">
                    <ee:message>
                        <ee:set-payload><![CDATA[%dw 2.0
    output application/json
    ---
    {message: "Resource not found"}]]></ee:set-payload>
                    </ee:message>
                    <ee:variables>
                        <ee:set-variable variableName="httpStatus">404</ee:set-variable>
                    </ee:variables>
                </ee:transform>
            </on-error-propagate>
        </error-handler>

インターフェースおよび実装ファイルに名前を付ける

API 仕様を既存のインテグレーションにインポートすると、Anypoint Code Builder で設定 XML ファイルの名前が API 仕様名に基づいて自動的に設定されます。 ファイル名を、たとえばその機能に基づいてわかりやすい名前に変更することができます。次に例を示します。

  • interface.xml​ でアプリケーションへのすべての受信要求を受け取り、スキャフォールディング済みフローで要求を検証してルーティングします。

  • implementation.xml​ では、インターフェースへのコールのためのバックエンドロジックを提供します。

ファイルの名前を変更するには、ファイルを右クリックして ​[Rename (名前変更)]​ を選択し、新しい名前を指定します。