是否可以或建议从startup.cs拆分mvc路由

时间:2016-03-27 15:14:11

标签: asp.net-core-mvc

尽管我真的很享受mvc核心的新方向,但我觉得退步的一个方法就是建立路线。我正在构建的应用程序有超过50条不同的路由,并且将所有这些路由放在startup.cs中似乎在某些时候由于所有路由而变得有点笨拙。

是否可以将路由拆分为自己的对象或中间件,就像之前版本的mvc一样?

1 个答案:

答案 0 :(得分:2)

可以使用注释直接在每个控制器上定义路由:

namespace Example.WebApp
{
    [Route("api/sheep")]
    public class SheepController : Controller
    {
        [HttpGet("{id}")]
        public IActionResult Get(long id)
        {
            return new ObjectResult("Example"+id);
        }
        [HttpPost]
        public void Post([FromBody]ComplexObject obj)
        {
        }
        [HttpGet("horse/{id}/{chicken}")]
        public void AnotherGet(long id, string chicken)
        {
        }
    }
}

使用这些注释,您可以构建任意复杂的URI方案,而Startup.cs中没有所有复杂性 - 但是,缺点是您需要负责确保不跨多个控制器创建冲突的URI。