44.6. 例子


44.6.1. 查询

简单查询可以在 URI 中直接定义:

from("direct:start")
    .to("graphql://http://example.com/graphql?query={books{id name}}")
Copy to Clipboard Toggle word wrap

正文也可以用于查询:

from("direct:start")
    .setBody(constant("{books{id name}}"))
    .to("graphql://http://example.com/graphql")
Copy to Clipboard Toggle word wrap

查询可以来自标头:

from("direct:start")
    .setHeader("myQuery", constant("{books{id name}}"))
    .to("graphql://http://example.com/graphql?queryHeader=myQuery")
Copy to Clipboard Toggle word wrap

更复杂的查询可以存储在文件中,并按如下所示在 URI 中引用:

bookQuery.graphql 文件:

query Books {
  books {
    id
    name
  }
}
Copy to Clipboard Toggle word wrap

from("direct:start")
    .to("graphql://http://example.com/graphql?queryFile=booksQuery.graphql")
Copy to Clipboard Toggle word wrap

当查询文件定义多个操作时,需要指定应执行哪些操作:

from("direct:start")
    .to("graphql://http://example.com/graphql?queryFile=multipleQueries.graphql&operationName=Books")
Copy to Clipboard Toggle word wrap

使用变量的查询需要引用 registry 中的 JsonObject 实例:

bookByIdQuery.graphql 文件:

query BookById($id: Int!) {
  bookById(id: $id) {
    id
    name
    author
  }
}
Copy to Clipboard Toggle word wrap

@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")
Copy to Clipboard Toggle word wrap

通过 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")
Copy to Clipboard Toggle word wrap

44.6.2. mutations

变异类似于带有变量的查询。它们指定查询和对变量 bean 的引用,如下所示:

addBookMutation.graphql 文件:

mutation AddBook($bookInput: BookInput) {
  addBook(bookInput: $bookInput) {
    id
    name
    author {
      name
    }
  }
}
Copy to Clipboard Toggle word wrap

@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")
Copy to Clipboard Toggle word wrap
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部