С Маршрутизация атрибутов и обычная маршрутизация :
Обычно используются обычные маршруты для контроллеров, обслуживающих страницы HTML для браузеров, и маршрутизация атрибутов для контроллеров, обслуживающих API-интерфейсы REST.
С Создание веб-API с помощью ASP.NET Core: требование маршрутизации атрибута :
Атрибут [ApiController]
делает требование маршрутизации атрибута обязательным. Например:
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
Действия недоступны по обычным маршрутам, определенным UseEndpoints
, UseMvc
или UseMvcWithDefaultRoute
в Startup.Configure.
Если вы хотите использовать обычные маршрутыдля веб-API необходимо отключить атрибуты маршрута на веб-API.
Запуск:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "Default",
pattern: "{controller=default}/{action=Index}/{id?}");
});
}
Контроллер веб-API:
//[Route("api/[controller]")]
//[ApiController]
public class DefaultController : ControllerBase
{
public ActionResult<string> Index()
{
return "value";
}
//[HttpGet("{id}")]
public ActionResult<int> GetById(int id)
{
return id;
}
}
Это может быть запрошено http://localhost:44888/default/getbyid/123