У ядрі .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, який створює новий об'єкт.
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);
}
}
}
ВАЖЛИВО
Зауважте, що перший параметр в CreatAtRoute (routeName) повинен бути однаковим при визначенні Імені методом Get.
Об'єкт другого параметра повинен мати необхідні поля, які ви використовуєте для отримання ресурсу методом Get, ви можете сказати, що це підмножина об'єкта, створеного самим собою
Останній параметр - це об'єкт компанії, отриманий у запиті body у повному вигляді.
ОКОНЧНО
Як кінцевий результат, коли до цього API буде створено повідомлення про створення нової компанії, ви повернете такий маршрут, як "api / company / {id}", який поверне вам щойно створений ресурс