The query type in GraphQL represents a read-only view of all of our entities and ways to retrieve them. A query type is required for every GraphQL server.
SDL
type Query { books: [Book!]! author(id: Int!): Author}
Clients can query one or more fields through the query type.
GraphQL
query { books { title author } author(id: 1) { name }}
Queries are expected to be side-effect free and are therefore parallelized by the execution engine.
Usage
A query type can be defined like the following.
C#
public class Query{ public Book GetBook() { return new Book { Title = "C# in depth", Author = "Jon Skeet" }; }}
public class Startup{ public void ConfigureServices(IServiceCollection services) { services .AddGraphQLServer() .AddQueryType<Query>(); }}
Warning
Only one query type can be registered using AddQueryType()
. If we want to split up our query type into multiple classes, we can do so using type extensions.
A query type is just a regular object type, so everything that applies to an object type also applies to the query type (this is true for all root types).