Dotnet api graphql linux: Difference between revisions
Jump to navigation
Jump to search
Line 70: | Line 70: | ||
services.AddGraphQL(o => { o.ExposeExceptions = false; }) | services.AddGraphQL(o => { o.ExposeExceptions = false; }) | ||
.AddGraphTypes(ServiceLifetime.Scoped); | .AddGraphTypes(ServiceLifetime.Scoped); | ||
</syntaxhighlight> | |||
Add the GraphQL to the middleware | |||
<syntaxhighlight lang="c#"> | |||
public void Configure(IApplicationBuilder app, CarvedRockDbContext dbContext) | |||
{ | |||
app.UseGraphQL<CarvedRockSchema>(); | |||
app.UseGraphQLPlayground(new GraphQLPlaygroundOptions()); | |||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 06:02, 6 August 2020
Creating a Project
Copy the project from RAID array
Sorry no help here
Add the packages
dotnet add package GraphQL
Create Database
Change the connection string
"CarvedRock": "Server=.;Database=CarvedRock;Trusted_Connection=False;User Id=test;Password=nottherealone"
Update the database
dotnet ef database update
Run the Site
To the site and look at https://localhost:5001/ui/playground
Creating a Schema
Create a Product Graph Type
Create Fields based on Meta Fields within ObjectGraphType
public class ProductType: ObjectGraphType<Product>
{
public ProductType()
{
Field(t => t.Id);
Field(t => t.Name).Description("The name of the product");
Field(t => t.Description);
}
}
Create a Query
Create a Query which looks in the repository (DB) and gets all of the products.
public class CarvedRockQuery: ObjectGraphType
{
public CarvedRockQuery(ProductRepository productRepository)
{
Field<ListGraphType<ProductType>>(
"products",
resolve: context => productRepository.GetAll()
);
}
}
Create a Schema for the Carved Rock Query
This holds the queries the schema supports. In our case the CarvedRockQuery created above
public class CarvedRockSchema: Schema
{
public CarvedRockSchema(IDependencyResolver resolver): base(resolver)
{
Query = resolver.Resolve<CarvedRockQuery>();
}
}
Configuring ASP .NET Core
In the Startup, Add the dependency resolver to the services, add the Schema and GraphQL configuring options.
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<IDependencyResolver>(s => new FuncDependencyResolver(s.GetRequiredService));
services.AddScoped<CarvedRockSchema>();
services.AddGraphQL(o => { o.ExposeExceptions = false; })
.AddGraphTypes(ServiceLifetime.Scoped);
Add the GraphQL to the middleware
public void Configure(IApplicationBuilder app, CarvedRockDbContext dbContext)
{
app.UseGraphQL<CarvedRockSchema>();
app.UseGraphQLPlayground(new GraphQLPlaygroundOptions());