ROUTING
在 .NET Core Web API 項目中,我們應該使用屬性路由代替傳統路由,這是因為屬性路由可以幫助我們匹配路由參數名稱與 Action 內的實際參數方法。另一個原因是路由參數的描述,對我們而言,一個名為 "ownerId" 的參數要比 "id" 更加具有可讀性。
我們可以使用 [Route] 屬性來在控制器的頂部進行標注:
[Route("api/[controller]")] public class OwnerController : Controller { [Route("{id}")] [HttpGet] public IActionResult GetOwnerById(Guid id) { } }
還有另一種方式為控制器和操作創建路由規則:
[Route("api/owner")] public class OwnerController : Controller { [Route("{id}")] [HttpGet] public IActionResult GetOwnerById(Guid id) { } }
對於這兩種方式哪種會好一些存在分歧,但是我們經常建議采用第二種方式。這是我們一直在項目中采用的方式。
當我們談論路由時,我們需要提到路由的命名規則。我們可以為我們的操作使用描述性名稱,但對於 路由/節點,我們應該使用 NOUNS 而不是 VERBS。
一個較差的示例:
[Route("api/owner")] public class OwnerController : Controller { [HttpGet("getAllOwners")] public IActionResult GetAllOwners() { } [HttpGet("getOwnerById/{id}"] public IActionResult GetOwnerById(Guid id) { } }
一個較好的示例:
[Route("api/owner")] public class OwnerController : Controller { [HttpGet] public IActionResult GetAllOwners() { } [HttpGet("{id}"] public IActionResult GetOwnerById(Guid id) { } }