.netコアWebAPIでは、このメソッドを使用して201コードを返します。これは、オブジェクトが作成されたことを意味します。
[Microsoft.AspNetCore.Mvc.NonAction]
public virtual Microsoft.AspNetCore.Mvc.CreatedAtRouteResult CreatedAtRoute (string routeName, object routeValues, object content);
上記のように、CreatedAtRouteは3つのパラメーターを受け取ることができます。
routeName
は、作成後にリソースを取得するURIになるメソッドに付ける必要がある名前です。
routeValues
名前付きルートでGETメソッドに渡される値を含むオブジェクトです。作成されたオブジェクトを返すために使用されます
content
作成されたオブジェクトです。
上記の例は、結合された名前を持つ単純なGETメソッドと、新しいオブジェクトを作成するPOSTメソッドを使用した、単純なコントローラーの2つのメソッドの実装を示しています。
namespace BastterAPI.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class CompanyController : Controller
{
private ICompanyRepository _companyRepository;
public CompanyController(ICompanyRepository companyRepository)
{
_companyRepository = companyRepository;
}
[HttpGet("{id}", Name="GetCompany")]
public IActionResult GetById(int id)
{
Company company = _companyRepository.Find(id);
if (company == null)
{
return NotFound();
}
return new ObjectResult(company);
}
[HttpPost]
public IActionResult Create([FromBody] Company company)
{
if (company == null)
{
return BadRequest();
}
_companyRepository.Add(company);
return CreatedAtRoute("GetCompany", new Company { CompanyID = company.CompanyID }, company);
}
}
}
重要
CreatedAtRoute(routeName)の最初のパラメーターは、GetメソッドでのNameの定義と同じでなければならないことに注意してください。
2番目のパラメーターのオブジェクトには、Getメソッドでリソースを取得するために使用する必要なフィールドが必要です。これは、それ自体が作成されたオブジェクトのサブセットであると言えます
最後のパラメーターは、本文リクエストで受信された会社オブジェクトで、完全な形式です。
最終
最終的に、新しいAPIを作成するための投稿がこのAPIに対して行われると、新しく作成されたリソースに戻る「api / company / {id}」のようなルートが返されます