我正在尝试 Akka-http,希望有人能阐明以下问题:
我的代码是这样的;
...
path("api") {
get {
complete {
getStuff.map[ToResponseMarshallable] {
case Right(r) if r.isEmpty => List[String]().toJson.compactPrint
case Right(r) => r.toJson.compactPrint
case Left(e) => BadRequest -> e
}
}
}
}
...
这种情况下的响应是 text/plain,因为 compactPrint 创建了一个字符串。
非常欢迎批评。 ;)
最佳答案
您可以按如下方式定义内容类型,
complete {
HttpResponse(entity = HttpEntity(ContentType(MediaTypes.`application/json`), """{"id":"1"}"""))
}
您可以创建您的自定义指令,
def handleReq(json: String) = {
(get & extract(_.request.acceptedMediaRanges)) {
r =>
val encoding: MediaRange =
r.intersect(myEncodings).headOption
.getOrElse(MediaTypes.`application/json`)
complete {
// check conditions here
// HttpResponse(entity = HttpEntity(encoding.specimen, json)) //
}
}
}
并在路由中使用指令作为
val route = path("api"){ handleReq(json) }
关于scala - Akka-http:接受和内容类型处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32187858/