scala - 如何在 akka http 中序列化/反序列化 protobuf?

标签 scala protocol-buffers akka-http

我正在使用 Akka Http 2.4.7。对于 Json(使用 json4s),序列化是这样的:

entity(as[CaseClass]) { serialisedCaseClass => .... }

对于反序列化,我只返回一个案例类对象。

我想知道protobuf有类似的方法吗?

最佳答案

不,没有任何现成可用的东西(但我同意如果有的话那就太好了)。您当前需要构建自己的自定义解码器来执行此操作(从 akka-http 2.4.11 开始)。

您可以基于现有的 protobuf 定义构建自己的解码器。这是一个如何做到这一点的 stub :

case class Person(...)

implicit val personUnmarshaller: FromEntityUnmarshaller[Person] =
  PredefinedFromEntityUnmarshallers.byteArrayUnmarshaller map { bytes =>
    // bytes is an Array[Byte]
    // call protobuf to do the unmarshalling
  }

然后将此定义导入您的 route 。

关于scala - 如何在 akka http 中序列化/反序列化 protobuf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39440028/

相关文章:

Scala Akka HTTP 转换参数为 java.time.ZonedDateTime

scala - Akka Http 客户端 :Custom headers

斯卡拉 SBT : possible bug?

c# - 从 .Net Framework 客户端调用 gRPC 服务器时出现异常

java - 用于 Protobuf 编译器的 gRPC Java Codegen 插件

java - 使用 Protocol Buffer 进行二进制日志记录

scala - Spray、Akka-http 和 Play,这是新 HTTP/REST 项目的最佳选择

java - 一个有用的指标,用于确定 JVM 何时将陷入内存/GC 故障

c++ - Play Scala - 原生访问

mysql - Slick flatMap 不会将所有查询作为一个组执行