GraphQL プロジェクトを変更する前に、アプリケーションを IDE 内でローカルで実行してエンドポイントをテストします。
始める前に
GraphQL API の実装を完了します。
アプリケーションを実行する
Mule アプリケーションを IDE 内でローカルにデプロイするには、Anypoint Code Builder でデバッグセッションを実行します。
-
Anypoint Code Builder で [Books Implementation (ブック実装)] プロジェクトを開きます。
-
アクティビティバーの
([Run and Debug (実行およびデバッグ)]) アイコンをクリックし、[Start Debugging (F5) (デバッグを開始 (F5))] アイコンをクリックします。 -
IDE から、コンソールのターミナルウィンドウを開きます。
-
デスクトップ IDE で、[View (表示)] > [Terminal (ターミナル)] を選択する。
-
クラウド IDE で、
(メニュー) アイコンをクリックし、[Terminal (ターミナル)] > [New Terminal (新規ターミナル)] を選択する。 -
いずれかの IDE で、Ctrl キーを押してからバッククォートキー (`) を押す。
-
-
ターミナルで、プラス (+) アイコンをクリックして新しいコマンドプロンプトを開きます。次に例を示します。

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

-
シェルのプロンプトから次の
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="{
 "id": "some-id",
 "name": "This is some example data",
 "pageCount": -2,
 "author": {
 "id": "urn:uuid:123e4567-e89b-12d3-a456-426655440000",
 "firstName": "This is some example data",
 "lastName": "This is some example data"
 }
}" mimeType="application/json"/> -
必要に応じて、他のエンドポイントのクエリを試します。
-
次の
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 } } } -
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 } } }
-
-
GraphQL 実装の応答の設定に進み、各フローに各クエリのカスタム応答を入力します。