在使用Netflix的DGS(Domain Graph Service)Java GraphQL客户端时,如果需要在查询中使用变量进行参数替换,可能会遇到一些困惑。以下是如何正确地实现这一目标的详细步骤和实例。
为什么代码生成查询不支持变量?
首先需要了解的是,DGS Java GraphQL客户端的代码生成查询(codegen queries)不直接支持变量的使用。这是因为这些查询的参数在Java中是类型化的,比如一个Int参数在Java中就是一个Integer,这使得直接插入变量变得不便。这也是为什么尽管变量出现在请求体中,它们并未被实际使用的原因。
如何使用变量?
如果你确实需要使用变量来动态构建查询,以下是一个推荐的替代方案:
- 使用多行字符串:在Java或Kotlin中,你可以直接编写GraphQL查询字符串,并使用变量。
StringqueryString=""" query ExampleQuery($first: Int, $filter: ExampleFilter) { exampleData(first: $first, filter: $