Я ищу способ иметь несколько маршрутов в моем ASP.NET Core, которые отличаются определенным заголовком. Я нашел этот вопрос, который отвечает на тот же вопрос, НО для API на основе контроллеров: Маршрутизация на основе заголовка в ASP.NET Core
Я ищу то же самое, но для минимальных API. Я нашел это (https://learn.microsoft.com/en-us/aspnet/core/fundamentals/routing?view=aspnetcore-8.0#route-constraints), описывающее ограничения настраиваемых маршрутов, но на самом деле я этого не знаю. заботятся о каких-либо параметрах (на самом деле у моего пути их нет), поэтому я не знаю, как его использовать.
(Я иронически отмечаю, что «Минимальный API» в ASP.NET Core возник как попытка снизить входной барьер для ASP.NET, чтобы не перегружать новичков церемонией Startup — но теперь это бессмысленное модное словечко, потому что использование «Минимального API» не помогает предотвратить превращение проектов нетривиальной сложности в настоящий беспорядок после 5-6 лет разработки или, что еще хуже, передачу их стажеру-первокурснику)
Вы правы, это всего лишь несколько маршрутов, и я уже потратил на них больше времени, чем оправдано 😅 но я воспринимаю это как возможность для обучения.





Следующий код работает для условного сопоставления минимальных конечных точек.
app.UseRouting();
app.MapWhen(context => context.Request.Headers["route"]= = "A", (appBuilder) =>
{
appBuilder.UseEndpoints(endpoints =>
{
endpoints.MapGet("A", () => { return "A result"; });
});
});
Выглядит многообещающе, попробую сегодня вечером, спасибо
Работает как шарм :)
О каких маршрутах здесь идет речь? Если их всего несколько, то лучше иметь одну «обычную» функцию Action/Handler или Middleware, которая проверяет заголовок запроса и просто выполняет прямой вызов метода – это действительно не стоит усилий, чтобы вникнуть в инфраструктуру ASP.NET, если не соблюдено соотношение усилий и вознаграждения (хотя, если вы хотите сделать это для обучения или для решения задачи, это другое дело - я предполагаю, что вы просто хотите делать что-то правильно, но ваш начальник/клиент предпочел бы, чтобы вы отправили что-то раньше, даже если внутри это выглядит некрасиво.