Я пытаюсь реализовать игрушечный сервер с конечной точкой graphql, используя Akka Http + Sangria. Однако, когда я отправляю запрос POST с полезной нагрузкой (прямой cppy и вставка из проверки Chrome)
{"query": "query FetchPokemons ($ height: Int) {\ n pokemonsWithHeight (height: $ height) {\ n name \ n} \ n}", "variables": {"height": 100}, "operationName ":" FetchPokemons "}
Сервер выдает ошибку
sangria.parser.SyntaxError: синтаксическая ошибка при разборе запроса GraphQL. Неожиданный конец ввода, ожидаемое объединение, комментарии, интерфейс, скаляр, перечисление, тип, inputType или директива (строка 1, столбец 79): "query FetchPokemons {\ n pokemonsWithHeight (height: 100) {\ n name \ n} \ n" } "
Но после проверки документов graphql, похоже, нет причин, по которым эта строка запроса не прошла бы этап синтаксического анализа. Это мой код для обработки тела http.
def queryResult(request: Json, schema: Schema[Resolvers, Unit], resolvers: Resolvers)(
implicit ec: ExecutionContext
): Route = { ctx =>
for {
queryJson <- Future.fromTry(Try(request.findAllByKey("query").head))
queryAst <- Future.fromTry(QueryParser.parse(queryJson.noSpaces))
variables = request.findAllByKey("variables").headOption.getOrElse(Json.obj())
opName = request.findAllByKey("operationName").headOption.flatMap(_.asString)
result <- Executor.execute(schema, queryAst, resolvers, operationName = opName, variables = variables)
res <- ctx.complete(StatusCodes.OK -> result)
} yield res
}