MVC中有两种路由类型,conventions routing
这是用于 mvc 和route attribute routing
这是用于 Web api 的。
对于配置的区域conventions routings
MVC 不应与路由属性结合使用。路由属性将覆盖默认约定路由。
如果你更喜欢attribute routing
, 你可以
[Route("WorldBuilder/api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
// GET api/values
[HttpGet("RegionSetSearch")]
public ActionResult<IEnumerable<string>> RegionSetSearch()
{
return new string[] { "value1", "value2" };
}
}
注意[HttpGet("RegionSetSearch")]
定义了动作RegionSetSearch
并在 url 中附加一个占位符。
请求是https://localhost:44389/worldbuilder/api/values/RegionSetSearch
如果你更喜欢conventions routing
,你可以删除Route
and ApiController
like
[Area("WorldBuilder")]
public class ValuesController : ControllerBase
{
// GET api/values
[HttpGet]
public ActionResult<IEnumerable<string>> RegionSetSearch()
{
return new string[] { "value1", "value2" };
}
}
通过这种方式,您需要更改UseMvc
like
app.UseMvc(routes => {
routes.MapRoute("areaRoute", "{area:exists}/api/{controller}/{action}/{id?}");
});
请求是https://localhost:44389/worldbuilder/api/values/RegionSetSearch