API Micronaut и клиент с контроллером, использующим Protobuf - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть 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 прибывает как пустой в Контроллере.

Есть идеи?

1 Ответ

1 голос
/ 08 мая 2019

Проблема в том, что текущий кодек 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, и PR приветствуются

...