Asp.net-Core
MVC 6 Web Api:解析 201 上的位置標頭(已創建)
在 Web Api 2.2 中,我們可以通過從控制器返回來返回位置標頭 URL,如下所示:
return Created(new Uri(Url.Link("GetClient", new { id = clientId })), clientReponseModel);
Url.Link(..)將根據控制器名稱相應地解析資源 URLGetClient:在 ASP.NET 5 MVC 6 的 Web Api 中,
Url框架中不存在,但CreatedResult建構子確實具有 location 參數:return new CreatedResult("http://www.myapi.com/api/clients/" + clientId, journeyModel);如何解決這個 URL 而無需手動提供它,就像我們在 Web API 2.2 中所做的那樣?
我沒有意識到這一點,但該
CreatedAtAction()方法迎合了這一點:return CreatedAtAction("GetClient", new { id = clientId }, clientReponseModel);確保您的控制器派生自 MVC 的控制器。
在新的 ASP.NET MVC Core 中有一個屬性
Url,它返回一個IUrlHelper. 您可以使用它通過以下方式生成本地 URL:[HttpPost] public async Task<IActionResult> Post([FromBody] Person person) { _DbContext.People.Add(person); await _DbContext.SaveChangesAsync(); return Created(Url.RouteUrl(person.Id), person.Id); }
