asp.net 核心网 api 中心路由
asp.net core web api center routing
我有一个与 asp.net 核心中心路由 相关的问题。我知道我们可以使用属性路由,但我没有找到任何与中心路由相关的东西,比如 asp.net web api.
如下所示:
routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
能否分享一下如何在asp.net内核中实现上述功能?如果没有内置功能,自定义路由服务可以实现吗?
此致,
爱德华
您可以将路由配置为 MVC 中间件的选项。在启动时将路由添加到配置方法 class
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseMvc(routes =>
{
routes.MapRoute("blog", "api/{*article}",
defaults: new { controller = "Blog", action = "Article" });
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
请注意,在 ASP.NET 中,MVC 和 API 的控制器相同。它是一个统一的模型。
web api 支持中心路由,但我们需要在 web api 上禁用属性路由。
路线:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
routes.MapRoute(
name: "api",
template: "api/{controller=Values}/{action=GetAll}/{id?}");
});
Web API 控制器:
//[Route("api/[controller]")]
//[Authorize]
public class ValuesController : Controller
{
private ApplicationDbContext _db;
public ValuesController(ApplicationDbContext db)
{
_db = db;
}
// GET: api/values
//[HttpGet]
public IEnumerable<string> GetAll()
{
var result = from user in _db.UserInfos
select user.UserName;
return result.ToList();
//return new string[] { "value1", "value2" };
}
// GET api/values/5
//[HttpGet("{id}")]
public string GetById(int id)
{
var result = from user in _db.UserInfos
select user.UserName;
return result.FirstOrDefault();
//return User.Identity.IsAuthenticated.ToString(); //"value";
}
}
这可以由 http://localhost:44888/api/values/getbyid/123
请求
我有一个与 asp.net 核心中心路由 相关的问题。我知道我们可以使用属性路由,但我没有找到任何与中心路由相关的东西,比如 asp.net web api.
如下所示:
routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
能否分享一下如何在asp.net内核中实现上述功能?如果没有内置功能,自定义路由服务可以实现吗?
此致,
爱德华
您可以将路由配置为 MVC 中间件的选项。在启动时将路由添加到配置方法 class
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseMvc(routes =>
{
routes.MapRoute("blog", "api/{*article}",
defaults: new { controller = "Blog", action = "Article" });
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
请注意,在 ASP.NET 中,MVC 和 API 的控制器相同。它是一个统一的模型。
web api 支持中心路由,但我们需要在 web api 上禁用属性路由。
路线:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
routes.MapRoute(
name: "api",
template: "api/{controller=Values}/{action=GetAll}/{id?}");
});
Web API 控制器:
//[Route("api/[controller]")]
//[Authorize]
public class ValuesController : Controller
{
private ApplicationDbContext _db;
public ValuesController(ApplicationDbContext db)
{
_db = db;
}
// GET: api/values
//[HttpGet]
public IEnumerable<string> GetAll()
{
var result = from user in _db.UserInfos
select user.UserName;
return result.ToList();
//return new string[] { "value1", "value2" };
}
// GET api/values/5
//[HttpGet("{id}")]
public string GetById(int id)
{
var result = from user in _db.UserInfos
select user.UserName;
return result.FirstOrDefault();
//return User.Identity.IsAuthenticated.ToString(); //"value";
}
}
这可以由 http://localhost:44888/api/values/getbyid/123