我是 scala 和 Akka-Http 的新手。试验 Akka-Http 来编写休息服务。我必须根据Accept
标头返回 json 或 protobuf。
optionalHeaderValueByName("Accept"){ contentType =>
if(contentType == Some(protoEncode)) {
complete {
NewsService.getNewsList().map {
case stories: List[Story] => HttpResponse(entity = HttpEntity(ContentType(protoEncoding), StoryList(stories).toProto().build().toByteArray))
}
}
} else {
complete {
NewsService.getNewsList().map {
case stories: List[Story] => StoryList(stories)
}
}
}
如您所见,代码重复正在发生,任何人都可以建议优化和概括设计以避免这种情况的最佳方法。