我的噴支倉服務調用其他參與者(在構造函數中傳遞RequestContext)以執行業務邏輯(similar to this approach)。我有一個用例,我需要從文件中讀取json文本並返回內容。我想要的內容類型是JSON。如何使用requestcontext顯式地將內容類型設置爲json。scala Spray Rest API使用RequestContext返回Json內容類型
在requestContext下面的代碼片段需要返回帶有Json內容類型的字符串(Json)。 requestContext.complete( 「{\」 名稱\ 「:\」 約翰\ 「}」)
package com.christophergagne.sprayapidemo
import akka.actor.{Actor, ActorRef}
import akka.event.Logging
import akka.io.IO
import spray.routing.RequestContext
import spray.httpx.SprayJsonSupport
import spray.client.pipelining._
import scala.util.{ Success, Failure }
object TimezoneService {
case class Process(long: Double, lat: Double, timestamp: String)
}
class TimezoneService(requestContext: RequestContext) extends Actor {
import TimezoneService._
implicit val system = context.system
import system.dispatcher
val log = Logging(system, getClass)
def receive = {
case Process(long,lat,timestamp) =>
process(long,lat,timestamp)
context.stop(self)
}
def process(long: Double, lat: Double, timestamp: String) = {
log.info("Requesting timezone long: {}, lat: {}, timestamp: {}", long, lat, timestamp)
import TimezoneJsonProtocol._
import SprayJsonSupport._
val pipeline = sendReceive ~> unmarshal[GoogleTimezoneApiResult[Timezone]]
val responseFuture = pipeline {
Get(s"https://maps.googleapis.com/maps/api/timezone/json?location=$long,$lat×tamp=$timestamp&sensor=false")
}
responseFuture onComplete {
case Success(GoogleTimezoneApiResult(_, _, timeZoneName)) =>
log.info("The timezone is: {} m", timeZoneName)
***requestContext.complete("{\"name\":\"John\"}")***
case Failure(error) =>
requestContext.complete(error)
}
}
}
謝謝你的幫助。