-
Notifications
You must be signed in to change notification settings - Fork 575
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
Use graphql extensions to provide information about bindings in server response #39
Comments
I really like this idea! We'll try to prioritize this and come up with a first mockup over the next few weeks. Would be great to hear other people's thoughts and ideas on this as well! 🙏 |
I've been playing around some more with this idea. This is what I've got so far:
bindings: [
{
"path": ["post, "comments"],
"binding": {
"name": "mydatasource",
"endpoint": "http://api.graph.cool/mydatasource/dev",
"path": ["query", "comments"]
}
}
] |
This is really awesome @kbrandwijk. Let's see whether we can collaborate with the folks @apollographql on this, as this looks similar to the GraphQL tracing extension. |
Yes, I took inspiration from that. I am already discussing this with them, because currently apollo-server has 2 hardcoded extensions and no way to specify another. Tooling is very limited there, the only place to do it is |
Due to inactivity of this issue we have marked it |
Due to inactivity of this issue we have marked it |
Hey 👋, It seems like this issue has been inactive for some time. In need for maintaining clear overview of the issues concerning the latest version of |
Hey, @Urigo from The Guild here! You might know us from projects such as graphql-code-generator, envelop or graphql-tools. For a long time we thought that the Javascript ecosystem is still missing a lightweight cross-platform, but still highly customizable GraphQL Server. In the past the awesome Prisma team took on that great challenge and now we are happy to announce that we are continuing them and just released GraphQL Yoga 2.0 - Build fast, extensible, and batteries-included (Subscriptions, Serverless, File uploads support) GraphQL APIs in Node.js 🚀 We have been working a long time on version 2.0 and have been using it in our clients projects for a few months now and shared a couple of alpha cycles here. Please try Yoga out again, give us feedback and help us spread the word on the new release! |
There was a discussion a while ago about how to visualize the composition of a GraphQL server that uses multiple bindings. This proposal addresses this issue.
What information to provide
A 'best practice' GraphQL server uses a single schema, and using delegation in the resolvers to delegate queries and mutations to 1 or more bindings (back-end GraphQL endpoints). During development and testing, it would be great to know:
How to provide this information
The GraphQL spec allows extensions to be added to a server response. Tracing and cache control already use these extensions to provide additional information. I would propose to also use extension information to provide information about the bindings.
A sample
bindings
extension object could look like this:The
path
specification is identical to the cache control extension (for a uniform approach). Endpoint information will not always be easily available though. Graphcool bindings provide an explicit endpoint. Generic bindings provide anexecutableSchema
, so that information might not be available at all. One option might be creating anapollo-link
variation that supports keeping track of this. Another, more generic solution, might be to setup an inline proxy to route all outgoing traffic through, so the hosts can be gathered (this is a commonly used setup in express).How to visualize this information
This information could be used by
graphql-playground
to provide some form of visual representation. This can be discussed further in thegraphql-playground
repo.The text was updated successfully, but these errors were encountered: