6
나는이 길이 : 이것은 잘 작동단일 경로에서 POST 매개 변수와 JSON 본문을 비 정렬 화하는 방법은 무엇입니까?
val routes =
pathPrefix("api") {
path("ElevationService"/DoubleNumber/DoubleNumber) { (long, lat) =>
post {
requestContext =>
println(long, lat)
}
}
}
, 내가 호출 할 수 있습니다 내 ElevationService
등 :
http://localhost:8080/api/ElevationService/39/80
문제는 내가 또한 요청으로 나에게 보내 몸을 구문 분석 할이다 JSON.
path("test") {
import scrive.actors.ScriveJsonProtocol
import spray.httpx.SprayJsonSupport._
post {
entity(as[ScriveRequest]) { scrive =>
complete(scrive)
}
}
}
하지만 하나에이 두 가지 경로를 병합하는 방법을 모른다 :
{
"first": "test",
"second": 0.50
}
나는 그것이 the documentation on the entity directive 다음과 같은 별도의 경로에서 작동하도록 관리했습니다 : 다음과 같습니다. 그들은 함수로 싸여 있기 때문에 , lat
함수를 entity
함수 내에서 호출 할 수는 없습니다. 그런 가정은 존재하지 않습니다. 같은 것이거나 다른 방향입니다.
나는 서비스가 모든 데이터를 전달하는 전화를 한 후 내 PARAMS 내 POST 본문 모두에 액세스하고, 할 수 있도록하려면 :
val elevationService = actorRefFactory.actorOf(Props(new ElevationService(requestContext)))
elevationService ! ElevationService.Process(long, lat, bodyParams)
감사합니다. 시도하지만, "누락 된 매개 변수 유형 : actorReply"를 얻습니다. 분명히 어디에도 정의되어 있지 않기 때문입니다. 이 "actorReply"는 Actor에 대한 콜백일까요, 아니면 무엇을위한 것입니까? 내가 바보 같은 질문을한다면 미안해. 나는 스프레이로 시작하고있어.이 DSL 라우팅은 혼란 스럽다. –
'actorReply'는 액터의 응답 이름으로 사용하고 있습니다. 나는 akka가 타입이 없다는 것을 잊었다. 그래서 아마 캐스팅이 필요할 것이다. 액터로부터의 응답을 기다릴 필요가 없다면'?'또는'onSuccess'가 필요하지 않습니다.'!'를 사용하여 액터에 fire-and-forget 메시지를 보낼 수 있습니다. 거기에 두십시오. – lmm