Por último vamos a configurar nuestro proyecto para trabajar con GraphQL, en nuestro archivo Startup.cs en el método ConfigureServices agregamos lo siguiente:
Startup.cspublic void ConfigureServices(IServiceCollection services){//código de los demás serviciosservices.AddSingleton<ISchema,CaducidadSchema>();services.AddSingleton<CaducidadInputType>();services.AddSingleton<CaducidadMutation>();services.AddGraphQL((options, provider) =>{options.EnableMetrics = CurrentEnvironment.IsDevelopment() ;var logger = provider.GetRequiredService<ILogger<Startup>>();options.UnhandledExceptionDelegate = ctx =>logger.LogError("{Error} occured",ctx.OriginalException.Message);}).AddSystemTextJson(deserializerSettings => { },serializerSettings => { }).AddErrorInfoProvider(opt => opt.ExposeExceptionStackTrace= CurrentEnvironment.IsDevelopment()).AddDataLoader().AddGraphTypes(typeof(CaducidadSchema));}
En nuestro método Configure agregamos todos los schemas, en mi caso solo agregare el de Caducidad. Agregamos UseGraphQLPlayground para generar una documentación para probar nuestros servicios similar a Swagger.
Startup.cspublic void Configure(IApplicationBuilder app, IHostingEnvironment env){app.UseGraphQL<CaducidadSchema>();app.UseGraphQLPlayground(options: new GraphQLPlaygroundOptions());}
De esta forma para probar el servicio necesitamos el siguiente query:
query TestQuery{caducidades{idproducto{idnombre}cliente{idnombreComercial}}}