如何在 Akka Http 中为 HttpResponse 设置 MediaType?
How to set MediaType for HttpResponse in Akka Http?
我正在构建一个端点,该端点在 Akka HTTP 的帮助下 returns 图像。我从 AWS S3 获取图像作为 ByteString
的流。每张图片都有自己的 MediaType
(image/gif
, image/png
, ...)
当我们有媒体类型字符串表示时,如何构造具有特定媒体类型的 HttpResponse 实体?
HttpResponse(StatusCodes.OK, entity = HttpEntity(image))
你可以使用-
val httpResponse = HttpEntity(MediaTypes.`image/gif`, <byte array of your image>)
要从字符串中获取 MediaType
,请使用 MediaType.parse
:
def parse(value: String): Either[List[ErrorInfo], MediaType]
Tries to parse a MediaType value from the given String. Returns Right(mediaType) if successful and Left(errors) otherwise.
例如:
MediaType.parse("image/gif") // Right(MediaTypes.`image/gif`)
HttpEntity
可以取一个ContentType
。要从上面的 MediaType
得到一个 ContentType
,你可以这样做:
val mediaTypeStr: String = ???
val mediaType: MediaType =
MediaType.parse(mediaTypeStr).toOption.getOrElse(/*a fallback/default MediaType*/)
val entity = HttpEntity(ContentType(mediaType), ...)
有一种方法可以通过扩展获取媒体类型。
进口akka.http.scaladsl.model._
val mediaType: MediaType = MediaTypes.forExtension("png")
我正在构建一个端点,该端点在 Akka HTTP 的帮助下 returns 图像。我从 AWS S3 获取图像作为 ByteString
的流。每张图片都有自己的 MediaType
(image/gif
, image/png
, ...)
当我们有媒体类型字符串表示时,如何构造具有特定媒体类型的 HttpResponse 实体?
HttpResponse(StatusCodes.OK, entity = HttpEntity(image))
你可以使用-
val httpResponse = HttpEntity(MediaTypes.`image/gif`, <byte array of your image>)
要从字符串中获取 MediaType
,请使用 MediaType.parse
:
def parse(value: String): Either[List[ErrorInfo], MediaType]
Tries to parse a MediaType value from the given String. Returns Right(mediaType) if successful and Left(errors) otherwise.
例如:
MediaType.parse("image/gif") // Right(MediaTypes.`image/gif`)
HttpEntity
可以取一个ContentType
。要从上面的 MediaType
得到一个 ContentType
,你可以这样做:
val mediaTypeStr: String = ???
val mediaType: MediaType =
MediaType.parse(mediaTypeStr).toOption.getOrElse(/*a fallback/default MediaType*/)
val entity = HttpEntity(ContentType(mediaType), ...)
有一种方法可以通过扩展获取媒体类型。
进口akka.http.scaladsl.model._
val mediaType: MediaType = MediaTypes.forExtension("png")