public static void AddGraphQl(this IApplicationBuilder app) { var openIdSettings = IocApi.Instance.Resolve <OpenIdSettings>(); var uriCombine = new Uri(openIdSettings.HostUrl.UriCombine("/graphql")); var settings = new GraphQLHttpOptions { Path = uriCombine.PathAndQuery, ExposeExceptions = true, BuildUserContext = ctx => { var userContext = new GraphQLUserContext { User = ctx.User }; return(Task.FromResult(userContext)); } }; var rules = app.ApplicationServices.GetServices <IValidationRule>(); rules.ForEach(x => settings.ValidationRules.Add(x)); app.UseGraphQLHttp <ISchema>(settings); app.UseGraphQLPlayground(new GraphQLPlaygroundOptions() { GraphQLEndPoint = uriCombine.PathAndQuery }); }
/// <summary> /// Specifies the GraphQL HTTP request options. /// </summary> /// <param name="builder"> /// The <see cref="GraphQLEndpointConventionBuilder"/>. /// </param> /// <param name="httpOptions"> /// The GraphQL HTTP request options. /// </param> /// <returns> /// Returns the <see cref="GraphQLEndpointConventionBuilder"/> so that /// configuration can be chained. /// </returns> public static GraphQLHttpEndpointConventionBuilder WithOptions( this GraphQLHttpEndpointConventionBuilder builder, GraphQLHttpOptions httpOptions) => builder.WithMetadata(new GraphQLServerOptions { AllowedGetOperations = httpOptions.AllowedGetOperations, EnableGetRequests = httpOptions.EnableGetRequests, EnableMultipartRequests = httpOptions.EnableMultipartRequests });
private GraphQLHttpOptions GetGraphQLHttpOptions(IApplicationBuilder application) { var options = new GraphQLHttpOptions() { // Show stack traces in exceptions. Don't turn this on in production. ExposeExceptions = this.hostingEnvironment.IsDevelopment(), }; // Add your own validation rules e.g. for authentication or custom field validation. var validationRules = application.ApplicationServices.GetServices <IValidationRule>(); if (validationRules != null) { foreach (var validationRule in validationRules) { options.ValidationRules.Add(validationRule); } } return(options); }
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } var validationRules = app.ApplicationServices.GetServices <IValidationRule>(); var options = new GraphQLHttpOptions(); validationRules.Concat(DocumentValidator.CoreRules()).Apply(options.ValidationRules.Add); options.BuildUserContext = httpContext => new GraphQLUserContext { User = httpContext.User }; app.UseGraphQLHttp <ISchema>(options); app.UseGraphiQLServer(new GraphiQLOptions()); app.UseMvc(); }