gRPC-Gateway: есть ли способ вернуть ответы в виде массивов JSON?

Я делаю реализацию https://todobackend.com/ с помощью gRPC-Gateway. Спецификация https://todobackend.com/ требует, чтобы некоторые ответы были представлены в виде массивов JSON, например:

GET /todos
=> [{ "title": "...", ... }, { ... }]

Но, насколько мне известно, с помощью gRPC-Gateway я должен возвращать объекты, например { "todos": [{ ... }, { ... }] }. Могу ли я возвращать массивы вместо объектов?


person wooseop    schedule 28.02.2021    source источник


Ответы (1)


Я нашел эту тему и заставил ее работать с опцией response_body вместе с allow_repeated_fields_in_body Аргумент командной строки.

  rpc Add(Todo) returns (Todo) {
    option (google.api.http) = {
      post: "/v1/todos",
      body: "*"
    };
  };
protoc -I proto/ -I googleapis \
  --go_out ./proto --go_opt paths=source_relative \
  --go-grpc_out ./proto --go-grpc_opt paths=source_relative \
  --grpc-gateway_out=allow_repeated_fields_in_body=true:./proto --grpc-gateway_opt paths=source_relative \
  ./proto/todo/todo.proto
# note "allow_repeated_fields_in_body=true"
person wooseop    schedule 01.03.2021