grpc-httpjson-transcoding icon indicating copy to clipboard operation
grpc-httpjson-transcoding copied to clipboard

Is map in query param supported?

Open zhengbuqian opened this issue 6 years ago • 1 comments

In my use case my GetSomethingRequest includes a map<string, string>, and I didn't manage to pass the map as a query param. So I have to attach a body to the GET request which is bad. This is how I define the messages and service:

message Key {
    map<string, string> data = 1;
    string field = 2;
}
message GetSomethingRequest {
    string parent = 1;
    Key key = 2;
}
service SomeService {
    rpc GetSomething(GetSomethingRequest) returns (Something) {
        option (google.api.http) = {
            get: "/v1/parent/{parent}/somethings"
        };
    }
}

I tried the following and neither of them works.

// also tried to replace [, ], {, }, :, = with percent encode.
// the first two are following https://github.com/grpc-ecosystem/grpc-gateway/pull/535
GET /v1/parent/parentname/somethings?field=aa&data[abc]=cba
GET /v1/parent/parentname/somethings?key.field=aa&key.data[abc]=cba
GET /v1/parent/parentname/somethings?key.field=aa&key.data={abc:cba}

So I wonder if map of primitives as query param is supported? If not any plans to add support for this? Thanks!

zhengbuqian avatar Oct 25 '19 19:10 zhengbuqian

This is really confusing because the grpc gateway project looks to support this behavior but I too an unable to get this to work through this transcoder as mentioned above. Would love to see a response on this. Again mentioning the feature in gateway that allows for map query parameters. https://github.com/grpc-ecosystem/grpc-gateway/pull/535

ambaumann avatar Feb 10 '20 18:02 ambaumann