Asp.net-Core

MVC 6 Web Api:解析 201 上的位置標頭(已創建)

  • November 8, 2020

在 Web Api 2.2 中,我們可以通過從控制器返回來返回位置標頭 URL,如下所示:

return Created(new Uri(Url.Link("GetClient", new { id = clientId })), clientReponseModel);

Url.Link(..)將根據控制器名稱相應地解析資源 URL GetClient

位置標頭

在 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);
}

引用自:https://stackoverflow.com/questions/31957060