我正在尝试 Akka-http,希望有人可以阐明以下问题:
如何根据请求中的 accept: 标头创建不同的路由?例如,我想要一个处理“json”的代码路径和一个处理“xml”请求的代码路径(如果缺少标头,则默认为“json”)
如果我不想推断 contentType,我该如何指定它?例如,在下面的代码中,我尝试通过 compactPrint() 运行 json,但这会将其更改为字符串,因此是“text/plain”。我想覆盖它并告诉客户它仍然是 json。
我的代码是这样的;
...
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 创建了一个字符串。非常欢迎批评。;)