Code Monkey home page Code Monkey logo

Comments (3)

sahb1239 avatar sahb1239 commented on July 19, 2024

Hello,

My overall goals with introspection is:

  1. Having a default introspection query
  2. Being able to validate custom queries against the output of the introspection query
  3. Update the GraphQL client to support passing in a expression which defines which fields should be included in the GraphQL request
  4. 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.

chelliwell avatar chelliwell commented on July 19, 2024

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.

sahb1239 avatar sahb1239 commented on July 19, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.