нет схемы доступно ядро ​​graphiql aspnet

У меня есть репо на https://github.com/nmarun/customergraph. Когда я запускаю приложение, я не вижу никакой схемы в проводнике документов. Когда я смотрю на вкладку «Сеть», я вижу ошибку 404.

404 в сетевом теге

Я думаю, мне нужно настроить GraphiQl для вызова конечной точки / graphql для получения деталей схемы, и по какой-то причине мой метод действия HTTP POST не попадает в конечную точку / graph.

Однако все вызовы через почтальона работают нормально, когда я попадаю в конечную точку: http://localhost:54068/graphql

Пожалуйста помогите.

using CustomerGraph.Models.Schema;
using CustomerGraph.Models.Services;
using GraphiQl;
using GraphQL;
using GraphQL.Server;
using GraphQL.Types;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;

namespace CustomerGraph
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
            services.AddScoped<IDocumentExecuter, DocumentExecuter>();
            services.AddSingleton<ICustomerService, CustomerService>();
            services.AddSingleton<CustomerType>();
            services.AddSingleton<AddressType>();
            services.AddSingleton<ContactType>();
            services.AddSingleton<ContactMethodType>();
            services.AddSingleton<CustomersQuery>();
            services.AddSingleton<CustomerSchema>();
            services.AddSingleton<IDependencyResolver>(
                c => new FuncDependencyResolver(type => c.GetRequiredService(type)));

            services.AddGraphQL(_ =>
            {
                _.EnableMetrics = true;
                _.ExposeExceptions = true;
            });

            var sp = services.BuildServiceProvider();
            services.AddSingleton<ISchema>(new CustomerSchema(new FuncDependencyResolver(type => sp.GetService(type))));

        }

        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseGraphiQl("/graphiql");
            app.UseGraphQL<ISchema>("/graphql");
            app.UseGraphQLWebSockets<CustomerSchema>("/graphql");
            app.UseWebSockets();
            app.UseHttpsRedirection();
            app.UseMvc();
        }
    }
}

Спасибо, Арун


person Arun    schedule 18.08.2019    source источник
comment
Обновил мой код, теперь Postman использует конечную точку localhost: 54068 / graph.   -  person Arun    schedule 18.08.2019


Ответы (1)


Это вызвано методом UseGraphIQL, он предполагает, что конечная точка graphql находится в том же месте, что и API GraphQL.

Исправьте это, заменив следующее:

   app.UseGraphiQl("/graphiql");
            //app.UseGraphQL<CustomerSchema>("/graph");
            //app.UseGraphQLWebSockets<CustomerSchema>("/graphql");
            //app.UseWebSockets();
            app.UseHttpsRedirection();
            app.UseMvc();

by:

   app.UseGraphiQl("/graphiql", "/graphql");
            app.UseGraphQL<CustomerSchema>("/graphql");
            app.UseGraphQLWebSockets<CustomerSchema>("/graphql");
            app.UseWebSockets();
            app.UseHttpsRedirection();
            app.UseMvc();
person MaartenDev    schedule 18.08.2019
comment
Идеально. Работал как шарм. Большое спасибо @MaartenDev - person Arun; 18.08.2019