GraphQL プロジェクトをテストする

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

GraphQL プロジェクトを変更する前に、アプリケーションを IDE 内でローカルで実行してエンドポイントをテストします。

始める前に

GraphQL API の実装を完了します。

アプリケーションを実行する

Mule アプリケーションを IDE 内でローカルにデプロイするには、Anypoint Code Builder でデバッグセッションを実行します。

  1. Anypoint Code Builder で ​[Books Implementation (ブック実装)]​ プロジェクトを開きます。

  2. アクティビティバーの ​​ (​[Run and Debug (実行およびデバッグ)]​) アイコンをクリックし、​[Start Debugging (F5) (デバッグを開始 (F5))]​ アイコンをクリックします。

  3. IDE から、コンソールのターミナルウィンドウを開きます。

    • デスクトップ IDE で、​[View (表示)]​ > ​[Terminal (ターミナル)]​ を選択する。

    • クラウド IDE で、​​ (メニュー) アイコンをクリックし、​[Terminal (ターミナル)]​ > ​[New Terminal (新規ターミナル)]​ を選択する。

    • いずれかの IDE で、Ctrl キーを押してからバッククォートキー (`) を押す。

  4. ターミナルで、プラス (​+​) アイコンをクリックして新しいコマンドプロンプトを開きます。次に例を示します。

    ターミナルからコマンドプロンプトを開く

    または、プラス (​+​) アイコンの横にある ​v​ メニュー (逆キャレット) をクリックして、使用するコマンドシェル (​bash​ など) を選択します。

    ターミナルから bash プロンプトを開く

  5. シェルのプロンプトから次の ​curl​ コマンドを実行して、​bookById​ フローをトリガーします。

    curl --request POST \
    --location 'http://localhost:8081/graphql' \
    --header 'Content-Type: application/json' \
    --data '{
      "query": "query bookById($id: ID) {bookById(id: $id){ id name pageCount author{ id firstName lastName}}}",
      "variables": {
        "id": 1
      }
    }'

    エラー​「curl: (7) Failed to connect to localhost port 8081 after 0 ms: Couldn’t connect to server (curl: (7) ローカルホストポート 8081 に接続できませんでした (0 ms 経過): サーバーに接続できませんでした)」​が発生したら、アプリケーションを停止して、デバッグモードで再実行します。アプリケーションの停止に関する指針は、Mule アプリケーションのデバッグを参照してください。

    Postman などのツールでは、GraphQL クエリをビルドする方法が提供されます。たとえば、Postman では、クエリを ​[Body (本文)]​ タブに配置して、​curl​ 要求のコードスニペットを見つけることができます。結果のコマンドには、​curl​ コマンドの ​--data​ 値から削除できる改行 (​\\n​) とタブ (​\\t​) 文字が含まれます。詳細は、Postman ドキュメントの 「Make an HTTP call with GraphQL (GraphQL を使用した HTTP コールの実行)」​を参照してください。

    Anypoint Code Builder からターミナルに次の出力が返されます (読みやすくするために手動で再書式設定)。

    { "data": {
                "bookById": {
                              "id":"#myID",
                              "name":"This is some example data",
                              "pageCount":100,
                              "author": {
                                          "id":"urn:uuid:123e4567-e89b-12d3-a456-426655440000",
                                          "firstName":"This is some example data",
                                          "lastName":"Hello World!"
                                        }
                            }
              }
    }

    出力のモックデータは、​Query.bookById​ フロー (​<flow name="Query.bookById"/>​) に含まれる Set Payload コンポーネントの文字列から取得されます。

    <set-payload value="{&#xa;  &quot;id&quot;: &quot;some-id&quot;,&#xa;
      &quot;name&quot;: &quot;This is some example data&quot;,&#xa;
      &quot;pageCount&quot;: -2,&#xa;  &quot;author&quot;: {&#xa;    &quot;id&quot;:
      &quot;urn:uuid:123e4567-e89b-12d3-a456-426655440000&quot;,&#xa;
      &quot;firstName&quot;: &quot;This is some example data&quot;,&#xa;
      &quot;lastName&quot;: &quot;This is some example data&quot;&#xa;  }&#xa;}"
      mimeType="application/json"/>
  6. 必要に応じて、他のエンドポイントのクエリを試します。

    1. 次の ​curl​ コマンドを使用して ​books​ エンドポイントを照会します。

      curl --location 'http://localhost:8081/graphql' \
      --header 'Content-Type: application/json' \
      --data '{"query":"query books { books{  id  name  pageCount  author{ id firstName lastName  } }}","variables":{}}'

      このコマンドでは、次の結果が返されます (読みやすくするために手動で再書式設定)。

      { "data": {
                  "books": [{
                               "id":"urn:uuid:123e4567-e89b-12d3-a456-426655440000",
                                "name":"This is some example data",
                                "pageCount":1,
                                "author": {
                                             "id":"urn:uuid:123e4567-e89b-12d3-a456-426655440000",
                                             "firstName":"This is some example data",
                                             "lastName":"Hello World!"
                                          }
                           }]
                 }
      }

      参考までに、​books​ エンドポイントは次のような構造になります。

      query books {
      	books{
      		id
      		name
      		pageCount
      		author{
      			id
      			firstName
      			lastName
      		}
      	}
      }
    2. Query ​bestSellers​:

      curl --location 'http://localhost:8081/graphql' \
      --header 'Content-Type: application/json' \
      --data '{"query":"query bestsellers { bestsellers{  books{   id   name   pageCount   author{    id    firstName    lastName   }  }  authors{   id   firstName   lastName  } } }","variables":{}}'

      このコマンドでは、次の結果が返されます (読みやすくするために手動で再書式設定)。

      { "data" : {
                   "bestsellers": {
                                    "books": [{
                                                "id":"#myID",
                                                "name":"This is some example data",
                                                "pageCount":1,
                                                "author": {
                                                            "id":"urn:uuid:123e4567-e89b-12d3-a456-426655440000",
                                                            "firstName":"This is some example data",
                                                            "lastName":"Hello World!"
                                                          }
                                              },
                                              {
                                                "id":"some-id",
                                                "name":"Goodbye",
                                                "pageCount":100,
                                                "author": {
                                                            "id":"urn:uuid:123e4567-e89b-12d3-a456-426655440000",
                                                            "firstName":"This is some example data",
                                                            "lastName":"Hello World!"
                                                          }
                                              },
                                              {
                                                "id":"urn:uuid:123e4567-e89b-12d3-a456-426655440000",
                                                "name":"Hello World!",
                                                "pageCount":-10,
                                                "author": {
                                                            "id":"urn:uuid:123e4567-e89b-12d3-a456-426655440000",
                                                            "firstName":"This is some example data",
                                                            "lastName":"Hello World!"
                                                          }
                                              }],
                                    "authors": [{
                                                  "id":"urn:uuid:123e4567-e89b-12d3-a456-426655440000",
                                                  "firstName":"Hello World!",
                                                  "lastName":"Hello World!"
                                                },
                                                {
                                                  "id":"#myID",
                                                  "firstName":"Goodbye",
                                                  "lastName":"Goodbye"
                                                }]
                                  }
                 }
      }

      参考までに、​bestsellers​ エンドポイントは次のような構造になります。

      query bestsellers {
      	bestsellers{
      		books{
      			id
      			name
      			pageCount
      			author{
      				id
      				firstName
      				lastName
      			}
      		}
      		authors{
      			id
      			firstName
      			lastName
      		}
      	}
      }
  7. GraphQL 実装の応答の設定に進み、各フローに各クエリのカスタム応答を入力します。