我正在实现 https://todobackend.com/使用 gRPC 网关。 https://todobackend.com/的规范要求一些响应采用 JSON 数组的形式,例如:
GET /todos
=> [{ "title": "...", ... }, { ... }]
但是据我所知,通过使用 gRPC-Gateway 我必须返回对象,例如 { "todos": [{ ... }, { ... }] }
。我可以返回数组而不是对象吗?
最佳答案
我找到了this thread并使其与 response_body
选项以及 allow_repeated_fields_in_body
CLI 参数一起使用。
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"
关于http - gRPC-Gateway:有没有办法以 JSON 数组的形式返回响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66407366/