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

Graphiql中标记为非空的所有字段和参数:Sangria,scala,scala,graphql,graphiql,sangria,Scala,Graphql,Graphiql,Sangria,我无法使用postman查询使用sangria库用scala编写的graphql服务器。 如果我将内容类型用作“application json”,并且如果我使用纯文本,那么我在postman中会收到一个格式错误的请求,并且我得到的内容类型不受支持。我使用的邮递员版本是6.2.4版。 代码非常简单,我从hbase读取数据。我使用sangria宏函数myCaseClass派生ObjectTypeUnit来定义对象。 但是,我可以通过将graphiql.html文件从资源连接到创建的路由来使用gra

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

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

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

字段在graphql模式中默认为可空,但在scala
null
s中几乎总是编程错误(如果将它们作为参数传递或返回,肯定总是如此)-如果希望为nullable,可以使用
选项显式对其建模。如果您想坚持GraphQL约定,只需将案例类中的所有字段写为
Option
al。

我将尝试将字段和参数标记为options。但与java实现类似,只有当我们希望将字段标记为不可为空时,才在.graphqls文件中的字段类型(例如column:String!)中添加感叹号。也不应该像java和GraphQl的其他实现那样,所有字段都默认为空。除了schema规范对象之外,还有其他方法来定义schema吗?使用.graphqls文件模式要简单得多。谢谢在Scala中,没有人认为字段是可空的
null
s基本上只在与Java交互时使用,因此没有人在构建工具时考虑到“默认为null”。您可以从code()生成模式,但我不知道用另一种方式。谢谢@Mateusz!!!将字段标记为选项确实有效。我现在确实在响应中得到了所需的空值。但是graphiql控制台模式如何仍然将这些字段显示为不可空字段,并且仍然在响应中发送空字段呢。