2017-12-11 5 views
1
  • Akka HTTP 버전으로 "akka-HTTP" "com.typesafe.akka"%% % "10.0.11"
  • 스트림 버전 " com.typesafe.akka "%%"akka 스트림 "%"2.5.7 "
  • 재생 JSON 버전 :"com.typesafe.play "%%"플레이 JSON을 "%"2.6.7 "

내가 가지고있는 crudService에서 다음과 같은 방법스칼라 Akka의 HTTP - 사용 경로를 반환 할 미래 [A] JSON

def getAll: Future[Seq[A]]

전 세계에 Json으로 결과를 제공하기 위해이를 반환하고 싶습니다.

val crudService = new CrudService[Todo]() 



val route = 
    pathPrefix("todo"/"_all") { 
     get { 
     complete { 
      crudService.getAll 
     } 
     } 
    } 



val bindingFuture = Http().bindAndHandle(route, hostname, port) 

가 나는 또한 (먼저 미래 완료)이 시도 :

val route = 
    pathPrefix("todo"/"_all") { 
     get { 
     onSuccess(crudService.getAll) { x => 
      complete x 
     } 
     } 
    } 

그것은 말을 계속 : ToResponseMarshallable에 적용 할 수 없음 나는 현재이 있습니다. 정확한 해결책으로 인도하는 문서를 찾을 수 없으며 여기에서 문제를 정확히 이해하지 못합니다. 누군가 도울 수 있습니까?

답변

0

마샬링 지원을 제공하려면 내장형이 아닌 play json 지원을 추가해야합니다.

https://github.com/hseeberger/akka-http-json 라이브러리를 가져 와서 PlayJsonSupport와 수업을 섞어보세요. App here 예제를 볼 수 있습니다.

def route(implicit mat: Materializer) = { 
    import Directives._ 
    import PlayJsonSupport._ 

    pathSingleSlash { 
    post { 
     entity(as[Foo]) { foo => 
     complete { 
      foo 
     } 
     } 
    } 
    } 
} 

Http().bindAndHandle(route, "127.0.0.1", 8000) 
+0

불행히도, 나는이 실행되지 않습니다. PlayJsonSupport는 sbt에 추가 한 후에 사용할 수 없습니다. – xDs