Comments (3)
Hello,
My overall goals with introspection is:
- Having a default introspection query
- Being able to validate custom queries against the output of the introspection query
- Update the GraphQL client to support passing in a expression which defines which fields should be included in the GraphQL request
- Automatically generating a GraphQL model
Currently number 1 and 2 is already implemented in develop and will be released soon as version 2.1 (you can use the AppVeyor nuget feed if you cannot wait). I don't have any plan for when number 3 and 4 would be ready.
You can see a example of usage of both the introspectionQuery and validation here.
Basically you first request your GraphQL server using the GraphQL client to get the introspectionQuery:
var introspectionQuery = await graphQLClient.CreateQuery<GraphQLIntrospectionQuery>("http://localhost/graphql").Execute();
Then you can validate a specific C# model:
var validationOutput = introspectionQuery.ValidateGraphQLType<GraphQLQueryModelToValidate>(GraphQLOperationType.Query);
If the validationOutput is empty the GraphQL validator did not find any errors.
I don't think validating each query before execution would be a good idea since this would require another server roundtrip and would therefore slow down the client in general. The validator is created such that it could be a part of your unit tests (for example I have made a unit test which validates if the GraphQLIntrospectionQuery
is valid (see the test case in the link)). The server should also provide some useful information in the errors when the query is invalid.
from sahb.graphqlclient.
Ah ok, yep I see. #1 and #2 would be my most 'like to haves'.
I agree about not validating before each query, although if the schema was fetched once at start-up and the validator could run against the in-memory copy? Certainly adequate to perform the validation as part of testing though - I control the client apps so I know what queries they will be attempting.
I'll explore it on the develop branch. Thanks
from sahb.graphqlclient.
I have created issue #94 to be more specific on remaining work (bullet 4). If you think this issue is not resolve you are welcome to open it again.
from sahb.graphqlclient.
Related Issues (20)
- How do I add arguments to a model nested in the query? HOT 1
- .NET Standard versions HOT 1
- How do i pass multiple arguments to the same Query ? HOT 1
- Null dereference bug during deserialization
- GraphQLArgumentAttribute doens't exist? HOT 2
- Support for OperationName
- Not Auth header, just a token
- Introspection validation fails with enum in query HOT 2
- Support reconnecting GraphQLSubscriptionClient
- Implement IAsyncEnumerable on IGraphQLSubscriptionOperation
- Support Httpclientfactory in GraphQL Client Builder for usage with ASP.net Core
- Accessing the log messages HOT 1
- Add CancellationToken support HOT 2
- Custom scalars HOT 1
- Schema validation fails when fields are nullable HOT 7
- Subscription [GraphQL] errors not being caught HOT 9
- Creating GraphQL model using introspection
- I'm trying to subscribe to this API, but I don't receive any response. These are my classes and this is the subscription HOT 6
- Mutate Guidance HOT 2
- How do I transform the names of parameters for a class that is used as a query argument? HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sahb.graphqlclient.