8.1.6 Configurando GraphQL

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.cs
public void ConfigureServices(IServiceCollection services)
{
//código de los demás servicios
services.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.cs
public 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
{
id
producto
{
id
nombre
}
cliente
{
id
nombreComercial
}
}
}