ASP.NET Core - Routing dla API oraz Angular

0

Mam ustawiony routing aby zwracał dla dowolnego adresu plik angulara. Mam również API, jednak problem jest taki, że odwołując się do adresu /api/nie-istniejacy-adres zwracany jest plik angulara i generowany jest widok, natomiast chciałbym aby dla /api/* jeżeli nie ma odpowiedniego kontrolera zwracany był błąd 404. Jak to zrobić? Oczywiście dla wszystkich pozostałych url (oprócz api) nadal ma być wykonywana akcja Index z kontrolera Home. Reguły routingu:

routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");

                routes.MapSpaFallbackRoute(
                    name: "spa-fallback",
                    defaults: new { controller = "Home", action = "Index" });
0

Możesz chyba coś takiego ustawić w app.Use w Startup.cs. Poniżej przykład z mojej aplikacji, z tym, że u mnie ono w takiej sytuacji zwraca 200 i przekierowywuje na "/", więc u ciebie trzeba to będzie zmodyfikować.

            app.Use(async (context, next) =>
            {
                await next();

                if (context.Response.StatusCode == 404 &&
                    !Path.HasExtension(context.Request.Path.Value) &&
                    !context.Request.Path.Value.StartsWith("/api/"))
                {
                    context.Request.Path = "/";
                    context.Response.StatusCode = 200;
                    await next();
                }
            });
0

Pod koniec tłumaczy jak działa routing.

0

youtube.com/watch?v=cXUHwQ-bJy4&list=PLpqSEBPAWz-3EO0vFhgd8LpVH6ErTQLyd&index=2

1 użytkowników online, w tym zalogowanych: 0, gości: 1