Можете да използвате UseRouter()
междинния софтуер за изрично картографиране на маршрути директно като част от тръбопровода за конфигуриране на вашето приложение.
Например, следното създава персонализиран маршрут за обработка на заявки Lets Encrypt, които по подразбиране биха се провалили, ако е активирано друго маршрутизиране. Следният код влиза в метода Configure()
на класа Startup
на сървъра:
// Handle Lets Encrypt Route(before MVC processing!)
app.UseRouter(r =>
{
r.MapGet(".well-known/acme-challenge/{id}", async (request, response, routeData) =>
{
var id = routeData.Values["id"] as string;
var file = Path.Combine(env.WebRootPath, ".well-known", "acme-challenge", id);
await response.SendFileAsync(file);
});
});
Това по същество прави много лесно опростените сценарии за маршрутизиране или препращането на заявки към други манипулатори.
Обърнете внимание, че това е суров интерфейс, който не включва обработка на вход или изход извън необработената семантика на заявка/отговор.
Ако правите нещо с данни в стил API, тогава все пак бих препоръчал да използвате MVC и контролери, които обработват всякакви неща, които иначе трябва да изградите сами. В Core, API и MVC изпълняват един и същ конвейер на контролера, така че можете да мислите за MVC като комбинирани Web API и MVC.
За повечето често срещани случаи на употреба използването на MVC все още е правилният начин. Горният подход е страхотен за микроуслуги или еднократни заявки, тъй като това може да ви донесе малко увеличение на производителността, тъй като не трябва да зарежда нито един от MVC битовете или да задейства този тръбопровод, но вие носите отговорност за извършване на ваша собствена сериализация и обработка на заявки.
person
Rick Strahl
schedule
18.10.2017
app.UseStaticFiles()
. - person NightOwl888   schedule 17.10.2017