Akka HTTP를 사용하여 Sangria의 Getting Started을 조금 변형했습니다. 나는 serializaltion lib로 json4s-jackson을 사용하려하지만, 내가 원하는 응답을 얻는데 어려움을 겪고있다.json4s 및 Akka HTTP를 사용하여 Sangria 응답을 어떻게 serialize 할 수 있습니까?
특히, 내가 얻을 직렬화 된 응답은 (StatusCode, Node)
튜플의 JSON 버전입니다 :
{
"_1": {
"allowsEntity": true,
"defaultMessage": "OK",
"intValue": 200,
"reason": "OK"
},
"_2": {
"data": {
"foo": {
"id": "1",
"name": "Foo"
}
}
}
}
data
부분이 올바른지,하지만 분명히 난 그냥 직렬화 된 튜플의 아닌 첫 번째 요소를 원한다. 내가 잘못 무엇을 알아낼 수 없습니다 내 인생
case class GraphQlData(query: String, operation: Option[String])
trait FooController {
import de.heikoseeberger.akkahttpjson4s.Json4sSupport._
implicit val serialization = jackson.Serialization
implicit val formats = DefaultFormats
val fooRoutes = post {
entity(as[GraphQlData]) { data =>
QueryParser.parse(data.query) match {
// query parsed successfully, time to execute it!
case Success(queryAst) =>
complete {
Executor
.execute(
SchemaDefinition.FooSchema,
queryAst,
new FooService,
operationName = data.operation
)
.map(OK -> _)
.recover {
case error: QueryAnalysisError => BadRequest -> error.resolveError
case error: ErrorWithResolver => InternalServerError -> error.resolveError
}
}
// can't parse GraphQL query, return error
case Failure(error) =>
complete(BadRequest -> error.getMessage)
}
}
}
implicit def executionContext: ExecutionContext
}
:처럼 나는 akka-http-json4s을 사용하고
, 그래서 경로 내 특성은 보인다. 나는 sangria-akka-http-example을보고 있었지만 json4s 대신 spray-json을 사용하는 것을 제외하고는 똑같은 것으로 보인다.
아이디어가 있으십니까? 감사!