Graphiql 中标记为非空的所有字段和参数:Sangria、scala

All fields and parameters marked as non-null in Graphiql : Sangria, scala

我无法使用 postman 查询使用其 sangria 库用 scala 编写的 graphql 服务器。 如果我将内容类型用作 "application-json",我会在邮递员中收到请求格式错误错误,如果我使用纯文本,我会收到不支持的内容类型。我使用的邮递员版本是 6.2.4 版。 代码非常简单,我从 hbase 读取数据。我使用 sangria 宏函数 deriveObjectTypeUnit, myCaseClass 来定义一个对象。 但是,我可以通过将 graphiql.html 文件从资源连接到创建的路由来使用 graphiql 控制台。 graphiql 控制台的问题是它将所有参数和字段标记为不可为 null,它不应该默认情况下字段在 graphql 中都是可以为 null 的。我从 graphiql 控制台的文档选项卡中检查了这一点,在那里我可以看到我的所有字段并且参数被标记为不可为空(后缀带有感叹号 )。 示例查询如下:

{
  hBaseTable(date: "2019-11-21", key: "10100003071234") {
    RowKey
    DateOfInt
  }
}

我的问题是我们如何在 sangria 中设置默认的可空性以及 graphql java 如何支持 postman 版本 6 但不支持 scala 实现。

字段在 GraphQL 模式中默认可以为空,但在 Scala 中 nulls 几乎总是编程错误(并且肯定总是如果你传递或 return 它们作为参数) - 你想要可以为空,你明确地用 Option 对它们建模。如果您想遵守 GraphQL 约定,只需将您案例中的所有字段 类 写为 Optional.