В WebAPI ядра .net этот метод используется для возврата кода 201, что означает, что объект был создан.
[Microsoft.AspNetCore.Mvc.NonAction]
public virtual Microsoft.AspNetCore.Mvc.CreatedAtRouteResult CreatedAtRoute (string routeName, object routeValues, object content);
Как видно выше, CreatedAtRoute может получать 3 параметра:
routeName
- это имя, которое вы должны присвоить методу, который будет URI, который получит этот ресурс после создания.
routeValues
Это объект, содержащий значения, которые будут переданы методу GET на указанном маршруте. Он будет использоваться для возврата созданного объекта
содержание
Это объект, который был создан.
В приведенном выше примере показана реализация двух методов простого контроллера с простым методом 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);
}
}
}
ВАЖНЫЙ
Обратите внимание, что первый параметр в CreatedAtRoute (routeName) должен совпадать с определением Name в методе Get.
Объект во втором параметре должен иметь необходимые поля, которые вы используете для извлечения ресурса в методе Get, вы можете сказать, что это подмножество объекта, созданного самим
Последний параметр - объект компании, полученный в теле запроса в его полной форме.
Финлей
В конечном итоге, когда сообщение о создании новой компании будет добавлено в этот API, вы вернете маршрут типа «api / company / {id}», который вернет вам вновь созданный ресурс.