Micronaut API 和带控制器的客户端使用 Protobuf
Micronaut API and Client with Controller consuming 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编解码器只支持编码Message类型。参见 https://github.com/micronaut-projects/micronaut-grpc/blob/a00a348028628c170d74bd7267011255c9ac01cd/protobuff-support/src/main/java/io/micronaut/protobuf/codec/ProtobufferCodec.java#L157
在我看来它也应该支持原始 byte[]
。请使用 https://github.com/micronaut-projects/micronaut-grpc 提交问题,感谢 PRs
我有一个 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编解码器只支持编码Message类型。参见 https://github.com/micronaut-projects/micronaut-grpc/blob/a00a348028628c170d74bd7267011255c9ac01cd/protobuff-support/src/main/java/io/micronaut/protobuf/codec/ProtobufferCodec.java#L157
在我看来它也应该支持原始 byte[]
。请使用 https://github.com/micronaut-projects/micronaut-grpc 提交问题,感谢 PRs