Scala 对PlayServiceCall进行POST查询

Scala 对PlayServiceCall进行POST查询,scala,graphql,sangria,Scala,Graphql,Sangria,我有一个PlayServiceCall,它应该处理GraphQL POST查询。守则如下: override def restPostCall: PlayServiceCall[String, String] = PlayServiceCall { request => Action.async(parse.json) { request => val query = (request.body \ "query").as[String] val o

我有一个PlayServiceCall,它应该处理GraphQL POST查询。守则如下:

override def restPostCall: PlayServiceCall[String, String] = PlayServiceCall { request =>

    Action.async(parse.json) { request =>
      val query = (request.body \ "query").as[String]
      val operation = (request.body \ "operationName").asOpt[String]
      val variables = (request.body \ "variables").toOption.map {
        case obj: JsObject => obj
        case _ => Json.obj()
      }

      QueryParser.parse(query) match {
        // query parsed successfully, time to execute it!
        case Success(queryAst) ⇒
          executeGraphQLQuery(queryAst, operation, variables getOrElse Json.obj())

        // can't parse GraphQL query, return error
        case Failure(error: SyntaxError) ⇒
          Future.successful(BadRequest(Json.obj("error" → error.getMessage)))
      }
    }
  }
该代码与Sangria网站的入门页面中解释的代码相同,也与的代码相同。这里graphqlBody方法处理GraphQL的POST请求

当我通过POST方法发送GraphQL查询时,它会给出以下错误-

For request 'POST /graphql' [Invalid Json: Unrecognized token 'query': was expecting ('true', 'false' or 'null') at [Source: akka.util.ByteIterator$ByteArrayIterator$$anon$1@10f6774; line: 1, column: 7]]

谁能帮我用Sangria的POST方法发送GraphQL查询。

嘿,伙计们,我刚刚找到了解决方案。查询仍然需要像这样以JSON格式发送

{
"query" : "query HeroAndFriends { hero {name friends { name }}}"
}

你能告诉我怎样才能像Sangria那样形成查询JSON吗?我不明白你的问题!