ASP.NET Core 5 EP 12:路由(Routing)與控制器的關係
路由(Routing)的功能
路由,顧名思義就是端到端所經過的路徑,在ASP.NET Core Web API中,可以視為Client到API Controller路徑的定義,但可不只這們簡單,同時也可以用於傳送參數,例如HTTP GET方法,就可以利用定義路由的方式,將URL上的參數對應到API Controller的變數中。
微軟官方對路由有更多說明:官方說明連結。
如何定義一個路由
利用標籤(如下)來標示路由,每個API的方法可以同時有多個路由,簡單而言,路由與API的關係是多對一的。
[Route("")]
例如,要設定一個API的URL為https://{ip or domain name}/api/get/info,路由的標籤會設計為:
[Route("api/get/info")]
可以發現,路由所設計及規範的是IP或Domain name以後的部分,而且是靜態且嚴謹的。
帶有參數的路由
通常,在HTTP GET方法上,會使用到URL帶入參數的功能,這時,就必須將API控制器的參數同樣定義到路由上,確保URL的規格能對應到API控制器的。
例如:
// 設定這個API使用GET方法
[HttpGet]
// 設定路由
[Route("name/{name}")]
public IActionResult Get(string name)
{
// 回傳HTTP 200,內容URL帶入的參數
return Ok(string.Format("Hi, {0}.", name));
}
路由的設計”name/{name}”,其中用大括號{}包起來的部分,與API控制器函數的輸入參數是對應的。
這個API的使用結果如下圖:
更簡便的標示方式
其實,在HTTP方法的標籤就可以直接將路由規則寫入,如下:
[HttpGet("api/get/info")]
~ END ~