2017-08-29 45 views
0

我有一個應該處理GraphQL POST查詢的PlayServiceCall。代碼如下 -在PlayServiceCall上進行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))) 
     } 
    } 
    } 

的代碼是一樣的人在入門頁面上桑格利亞網站,也example project on Github by Sangria代碼解釋。這裏graphqlBody方法處理GraphQL的POST請求。

當我通過POST方法它提供了以下錯誤發送GraphQL查詢 -

For request 'POST /graphql' [Invalid Json: Unrecognized token 'query': was expecting ('true', 'false' or 'null') at [Source: [email protected]; line: 1, column: 7]] 

任何人都可以請幫助如何通過POST方法與桑格利亞發送GraphQL查詢。

回答

1

嘿,我剛剛找到解決方案。查詢仍然需要以這樣的JSON格式發送

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

你能告訴我如何形成像桑格利亞這樣的查詢JSON? – Phil

+0

我不明白你的問題! – Ashish1269