尽管我真的很享受mvc核心的新方向,但我觉得退步的一个方法就是建立路线。我正在构建的应用程序有超过50条不同的路由,并且将所有这些路由放在startup.cs中似乎在某些时候由于所有路由而变得有点笨拙。
是否可以将路由拆分为自己的对象或中间件,就像之前版本的mvc一样?
答案 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。