Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gRPC decoding #44

Open
pimterry opened this issue Sep 30, 2019 · 7 comments
Open

gRPC decoding #44

pimterry opened this issue Sep 30, 2019 · 7 comments

Comments

@pimterry
Copy link
Member

pimterry commented Sep 30, 2019

HTTP Toolkit could automatically detect & decode gRPC/gRPC-web.


Does this affect you too? Click below and add a 👍 to vote for this and help decide where HTTP Toolkit goes next, or go vote on the other most popular ideas so far.

@fleytman
Copy link

fleytman commented Jul 4, 2022

Should we expect grpc support?

@pimterry
Copy link
Member Author

pimterry commented Jul 5, 2022

Eventually, absolutely! That said, it's currently number 8 on the open most-voted issues list, which is high but not top, so it's not being actively worked on today.

For reference, I think the first steps are probably:

  • A formatter in the UI for protobuf, which can work without .proto files (like protoc --decode_raw).
  • Adding application/grpc+proto to the supported content types, so that it uses that formatter, making it possible to read the body messages.
  • Improving how request & response streams are tracked, so that the bodies of streaming long-running requests are exposed early (right now we only show the body once it's finished, which I believe is problematic for quite a few gRPC use cases).

That alone would immediately make gRPC much more usable! There's much more we could do though, like rules to match certain requests, deeper UI integration to show the gRPC calls most explicitly, support to more easily edit bodies during breakpoints, and support for .proto files for more detailed & accurate content decoding. That bit depends on what you're looking for.

Right now, the most useful thing you can do to help with this is to share more information about your needs:

  • What's your use case?
  • which gRPC clients are you interested in? E.g. CLI clients, requests between Java services, mobile clients, etc.
  • What features are most important to you? Do you just want to see the data, or modify it in-flight? What data do you want to see?

Alternatively, if you're really interested in gRPC support, you'd be very welcome to work on some of the steps about and open a PR. Remember that HTTP Toolkit Pro is totally free for all open-source contributors 😄

@fleytman
Copy link

fleytman commented Jul 5, 2022

Thank you for your reply. I'm testing mobile application which uses grpc-web. I'd like see and mock requests and responses.

@pimterry
Copy link
Member Author

pimterry commented Jul 5, 2022

Ok, thanks, that makes sense. I think there's some promising options here for grpc-web at least, which should be easier than grpc in general (just body formatting alone would work easily and be a big improvement, for example). I'll keep an eye on this and see what I can do. In the meantime, open-source contributions here are very welcome!

@pimterry
Copy link
Member Author

pimterry commented Jul 8, 2022

I've incidentally just run into gRPC Server Reflection - when we get to this, it'll be worth looking into that in more depth, since in theory it would allow us to pull the service's protobuf specification on-demand, which would let us provide much more accurate decoding and debugging tools very easily.

@konsumer
Copy link

See #80

@pimterry
Copy link
Member Author

Just to update here, we've now added schemaless protobuf support generally, and more recently schemaless grpc and schemaless compressed grpc, so this is making good progress! You should now be able to see an approximate outline for most normal grpc requests & responses everywhere.

The remaining steps before I think I'd consider this 'done' are:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants