代码之家  ›  专栏  ›  技术社区  ›  Alex Fruzenshtein

如何在Akka Http中设置HttpResponse的MediaType?

  •  0
  • Alex Fruzenshtein  · 技术社区  · 6 年前

    我正在构建一个端点,它在Akka HTTP的帮助下返回图像。我从AWS S3得到的图像是 ByteString MediaType ( image/gif , image/png

    当我们有媒体类型字符串表示时,如何构造具有特定媒体类型的HttpResponse实体?

    HttpResponse(StatusCodes.OK, entity = HttpEntity(image))
    
    3 回复  |  直到 6 年前
        1
  •  2
  •   Jeffrey Chung    6 年前

    得到一个 MediaType 从字符串中,使用 MediaType.parse :

    def parse(value: String): Either[List[ErrorInfo], MediaType]
    

    媒体类型 右(媒体类型) 左(错误) 否则。

    例如:

    MediaType.parse("image/gif") // Right(MediaTypes.`image/gif`)
    

    HttpEntity 可以拿一个 ContentType 内容类型 媒体类型

    val mediaTypeStr: String = ???
    
    val mediaType: MediaType =
      MediaType.parse(mediaTypeStr).toOption.getOrElse(/*a fallback/default MediaType*/)
    
    val entity = HttpEntity(ContentType(mediaType), ...)
    
        2
  •  1
  •   Abdhesh kumar    6 年前

    有一种方法可以通过扩展来获取媒体类型。

    导入akka.http.scaladsl.model_

    val mediaType:mediaType=MediaTypes.forExtension(“png”)

        3
  •  0
  •   Rishikesh Dhokare    6 年前

    val httpResponse = HttpEntity(MediaTypes.`image/gif`, <byte array of your image>)