Mein Spray Rest Service ruft andere Akteure (Übergabe RequestContext im Konstruktor), um Geschäftslogik durchzuführen (similar to this approach). Ich habe einen Anwendungsfall, wo ich JSON-Text aus einer Datei lesen und den Inhalt zurückgeben muss. Ich möchte, dass der Inhaltstyp JSON ist. Wie setze ich den Inhaltstyp explizit mit requestcontext auf json.Scala Spray Rest API Rückgabe Json Inhaltstyp mit RequestContext
Im folgenden Codeausschnitt muss requestContext den String (Json) mit dem Json-Inhaltstyp zurückgeben. requestContext.complete ("{\" Name \ ": \" John \ "}")
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)
}
}
}
danke für die Hilfe.