サングリアのAPIは、地図のこれらの型を期待[文字列、任意]
これは真実ではありません。 sangriaでの実行の変数は、任意のタイプのT
であることができます。唯一の要件は、InputUnmarshaller[T]
のクラスのインスタンスです。すべてのマーシャリング統合ライブラリは、対応するJSON ASTタイプに対してのインスタンスを提供します。
これはsangria-circeがInputUnmarshaller[io.circe.Json]
を定義し、import sangria.marshalling.circe._
でインポートできることを意味します。この例では見ることができるように
import io.circe.Json
import sangria.schema._
import sangria.execution._
import sangria.macros._
import sangria.marshalling.circe._
val query =
graphql"""
query ($$foo: Int!, $$bar: Int!) {
add(a: $$foo, b: $$bar)
}
"""
val QueryType = ObjectType("Query", fields[Unit, Unit](
Field("add", IntType,
arguments = Argument("a", IntType) :: Argument("b", IntType) :: Nil,
resolve = c ⇒ c.arg[Int]("a") + c.arg[Int]("b"))))
val schema = Schema(QueryType)
val vars = Json.obj(
"foo" → Json.fromInt(123),
"bar" → Json.fromInt(456))
val result: Future[Json] =
Executor.execute(schema, query, variables = vars)
が、私は実行するための変数としてio.circe.Json
を使用:
は、ここでは、変数としてキルケJson
を使用する方法の小さなと自己完結型の例です。一般的にすべてのタイプであることを前提としていキルケ(での最善のアプローチは何ですか:上記の答えはサングリアの特定の場合のために働くが、私は元の質問に興味がある
{
"data": {
"add": 579
}
}
ありがとう@tenshi、それは知っておくと良いです。 –