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