44.6. 例
44.6.1. クエリー リンクのコピーリンクがクリップボードにコピーされました!
単純なクエリーは URI で直接定義できます。
from("direct:start")
.to("graphql://http://example.com/graphql?query={books{id name}}")
本文はクエリーにも使用できます。
from("direct:start")
.setBody(constant("{books{id name}}"))
.to("graphql://http://example.com/graphql")
クエリーはヘッダーから取得できます。
from("direct:start")
.setHeader("myQuery", constant("{books{id name}}"))
.to("graphql://http://example.com/graphql?queryHeader=myQuery")
より複雑なクエリーはファイルに保存し、次のように URI で参照できます。
booksQuery.graphql ファイル:
query Books {
books {
id
name
}
}
from("direct:start")
.to("graphql://http://example.com/graphql?queryFile=booksQuery.graphql")
クエリーファイルで複数の操作が定義されている場合は、どの操作を実行するかを指定する必要があります。
from("direct:start")
.to("graphql://http://example.com/graphql?queryFile=multipleQueries.graphql&operationName=Books")
変数を含むクエリーでは、レジストリーから JsonObject インスタンスを参照する必要があります。
bookByIdQuery.graphql ファイル:
query BookById($id: Int!) {
bookById(id: $id) {
id
name
author
}
}
@BindToRegistry("bookByIdQueryVariables")
public JsonObject bookByIdQueryVariables() {
JsonObject variables = new JsonObject();
variables.put("id", "book-1");
return variables;
}
from("direct:start")
.to("graphql://http://example.com/graphql?queryFile=bookByIdQuery.graphql&variables=#bookByIdQueryVariables")
variablesHeader パラメーターを介して変数にアクセスするクエリー:
from("direct:start")
.setHeader("myVariables", () -> {
JsonObject variables = new JsonObject();
variables.put("id", "book-1");
return variables;
})
.to("graphql://http://example.com/graphql?queryFile=bookByIdQuery.graphql&variablesHeader=myVariables")
44.6.2. ミューテーション リンクのコピーリンクがクリップボードにコピーされました!
ミューテーションは変数を持つクエリーのようなものです。次のようにクエリーと変数の Bean への参照を指定します。
addBookMutation.graphql ファイル:
mutation AddBook($bookInput: BookInput) {
addBook(bookInput: $bookInput) {
id
name
author {
name
}
}
}
@BindToRegistry("addBookMutationVariables")
public JsonObject addBookMutationVariables() {
JsonObject bookInput = new JsonObject();
bookInput.put("name", "Typee");
bookInput.put("authorId", "author-2");
JsonObject variables = new JsonObject();
variables.put("bookInput", bookInput);
return variables;
}
from("direct:start")
.to("graphql://http://example.com/graphql?queryFile=addBookMutation.graphql&variables=#addBookMutationVariables")