cro*_*ies 5 content-type scala http-headers spray
由于Spray.io是在低级别定义内容类型,我如何简单地引用传入请求的内容类型?
这是一个图像是PUT的简短示例.
put {
entity(as[Array[Byte]]) { data =>
complete{
val guid = Image.getGuid(id)
val fileExtension = // match a file extension to content-type here
val key = "%s-%s.%s" format (id, guid, fileExtension )
val o = new Image(key, contentType, data)
Image.store(o)
val m = Map("path" -> "/client/%s/img/%s.%s" format (id, guid, fileExtension))
HttpResponse(OK, generate(m))
}
}
}
Run Code Online (Sandbox Code Playgroud)
鉴于上面的代码,提取内容类型的简单方法是什么?我可以简单地使用它来模式匹配到合适的fileExtension.谢谢你的帮助.
您可以构建自己的指令来提取内容类型:
val contentType =
headerValuePF {
case `Content-Type`(ct) => ct
}
然后在你的路线中使用它:
put {
entity(as[Array[Byte]]) { data =>
contentType { ct => // ct is instance of spray.http.ContentType
// ...
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:如果你在每晚构建,MediaTypes已经包含文件扩展名,所以你可以使用那里的文件扩展名.在1.1-M7上,您必须按照建议提供自己的映射.