首页 > 解决方案 > 如何使用 Netflix DGS graphql-dgs-extended-scalars JSON 标量(java/spring-boot,maven)?

问题描述

我遇到了一个问题,我想使用graphql-dgs-extended-scalars,特别是 JSON 标量,但是很难找到关于如何做到这一点的清晰教程。我确定他们在那里,但以防万一有人发现自己处于与我相同的情况,希望我下面的简单解释将为他们节省一些时间。

标签: javaspring-bootmavengraphqlnetflix-dgs

解决方案


安装

在 pom 文件中(特定于 Maven)

<dependency>
    <groupId>com.netflix.graphql.dgs</groupId>
    <artifactId>graphql-dgs-extended-scalars</artifactId>
    <version>${netflix.graphql.dgs.version}</version>
</dependency>

在配置文件中(例如,application.yml)

dgs:
  graphql:
    extensions:
      scalars:
        objects:
          enabled: true

使用标量(在本例中为 JSON)

在架构中

...
 
type SomeType {
    thing: JSON!
}
 
...
 
input SomeTypeInput {
    thing: JSON!
}
 
...
 
scalar JSON

在将用作数据提取器输入的类中

public class SomethingDTO
{
 
    /**
     * This does not have to be a Map, you could use another
     * reasonable object like JSONObject, etc.
     */
    public Map<String, Object> thing;
 
}

然后,您可以在任意形状的查询中将 json 格式的对象作为参数传入。

这仅适用于 JSON 标量,但大多数(全部?)在 lib 中找到的其他标量都遵循该模式。


推荐阅读