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)
{
}
}
