Как вернуть ошибку по неверному API-запросу, используя ASP.Net Core 3, приложение SPA - PullRequest
0 голосов
/ 26 октября 2019

Я использую приложение SPA (React) в ASP.Net Core 3.

То, что происходит, заключается в том, что любой запрос сначала отправится на сервер и позволит .Net попытаться направить его, если нет. Маршрут найден, он возвращает index.html и предполагает, что SPA может обрабатывать маршрутизацию.

Большую часть времени я вполне доволен этим, но я хочу знать, есть ли способ исключить какие-либо маршрутизаторы для api/ в этом.

Мне очень досадно, что index.html возвращается (с 200) для любого выдуманного api/MadeUp/Request. Разве я не могу вернуть 500 по недействительным запросам API, но все же разрешить SPA управлять любыми другими запросами (т. Е. Возвращать index.html)?

1 Ответ

1 голос
/ 26 октября 2019

Вы можете добавить промежуточное программное обеспечение между UseEndpoint() и UseSpa() и вернуть 404 (или 500, если хотите), если URI запроса начинается с /api

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller}/{action=Index}/{id?}");
});

app.Use((context, next) =>
{
    if(context.Request.Path.StartsWithSegments(new PathString("api")))
    {
        context.Response.StatusCode = StatusCodes.Status404NotFound;
        return Task.CompletedTask;
    }

    return next();
});

app.UseSpa(spa =>
{
    spa.Options.SourcePath = "ClientApp";

    if (env.IsDevelopment())
    {
        spa.UseReactDevelopmentServer(npmScript: "start");
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...