API REST ASP.NET Core с React SPA - PullRequest
       0

API REST ASP.NET Core с React SPA

0 голосов
/ 31 мая 2018

У меня есть веб-приложение ASP.NET Core, в котором размещен REST API.Я пытаюсь добавить основанное на React одностраничное приложение (SPA) на сервер, но приложение не с использованием MVC .

Когда я включаюRouter мое приложение больше не загружается.Если я отключаю Router и размещаю только статическое приложение, оно загружается правильно, но, разумеется, оно не может связываться с веб-API.

Я также успешно разместил свой SPA, используя встроенный Pythonвеб-сервер и использует простой файловый сервер, написанный на Go, но, опять же, он не может «общаться» с моим API без запуска отдельных служб и / или прокси / перенаправления URL-адресов.Моя цель - одно приложение на C #, которое может обслуживать как API, так и статический пользовательский интерфейс.

Здесь приведены соответствующие части моего MyStartup класса:

public void ConfigureServices(IServiceCollection services)
{
    services.AddRouting();
    services.AddLogging();
}

public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
    app.UseDefaultFiles();
    app.UseStaticFiles(new StaticFileOptions {
        ServeUnknownFileTypes = true
    });

    app.UseRouter(buildRoutes(app));
}

private IRouter buildRoutes(IApplicationBuilder app)
{
    // TODO: Figure out how to add a default (and versioned) API base URL to the Router...
    string url(string path) {
        return $"api/{path}";
    }

    RouteBuilder routeBuilder = new RouteBuilder(app, new RouteHandler(null));

    /// Notify API
    routeBuilder.MapGet(url("status"), GetControllerStatus);

    routeBuilder.MapPost(url("heartbeat"), GotHeartbeat);

    routeBuilder.MapGet(url("items/{id}"), httpCtx =>  {
        string id  = httpCtx.GetRouteValue("id").ToString();
        return RetrieveItem(httpCtx, id);
    });

    // ... More routes ...

    return routeBuilder.Build();
}

и моего Main класс содержит этот отрывок:

IWebHost host =
    new WebHostBuilder()
        .UseKestrel()
        .UseContentRoot(Directory.GetCurrentDirectory())
        .UseUrls("http://*:11111")
        .UseStartup<MyStartup>()
        .Build();

host.Run();

Я исследовал следующие инструменты и учебные пособия, но все они, похоже, требуют различных подходов с использованием MVC:

Возможно ли разместить SPA из приложения ASP.NET Core, которое не использует MVC?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...