arrays - Micronaut API 和带有控制器的客户端使用 Protobuf
问题描述
我有一个 Micronaut @Controller 如下:
@Post("/whatever")
@Consumes("application/x-protobuf")
@Produces(MediaType.TEXT_PLAIN)
public HttpResponse deserializeData (@Body byte[] body)
throws ProtobufParsingException {
return requestHandler.processDataRequest(body);
}
以及调用此 API 的客户端:
@Client("${protobuf-manager.url}")
public interface ProtobufManagerClient {
@Post("/${protobuf-manager.apiversion}/whatever")
@Consumes(MediaType.TEXT_PLAIN)
@Produces(ProtobufferCodec.PROTOBUFFER_ENCODED)
String getData (@Body byte[] data);
}
问题是,我需要从我的byte[] data
参数发送我的字节而不是更改@Consumes("application/x-protobuf")
我的控制器中的。
body
在控制器中以空的形式到达。
任何想法?
解决方案
问题是当前的 Protobuf 编解码器只支持编码消息类型。见https://github.com/micronaut-projects/micronaut-grpc/blob/a00a348028628c170d74bd7267011255c9ac01cd/protobuff-support/src/main/java/io/micronaut/protobuf/codec/ProtobufferCodec.java#L157
在我看来,它也应该支持 raw byte[]
。请向https://github.com/micronaut-projects/micronaut-grpc提出问题,感谢 PRs
推荐阅读
- javascript - 正则表达式在反应原生中验证用户名
- flutter - Flutter,无解释的调试错误
- jquery - 如何通过服务将来自ajax post请求的json数据传递到jQuery DataTable中?
- java - 在 Java 中读取目录内容时出现 NullPointerException
- r - 如何在 case_when 中传递列名向量
- browser - 部署后如何确保用户拥有最新的 JS?
- excel - 我可以根据来自另一个单元格的输入来调整 Excel 中的单元格值吗?
- typescript - Vue CLI 添加内联 css 背景图片,路径错误
- python - 将数据从特定列移动到新行中的不同列
- git - git config 的反向查找