En .net core WebAPI, utiliza este método para devolver un código 201, lo que significa que se creó el objeto.
[Microsoft.AspNetCore.Mvc.NonAction]
public virtual Microsoft.AspNetCore.Mvc.CreatedAtRouteResult CreatedAtRoute (string routeName, object routeValues, object content);
Como puede ver arriba, el CreatedAtRoute puede recibir 3 parámetros:
routeName
Es el nombre que debe poner en el método que será el URI que obtendría ese recurso después de creado.
routeValues
Es el objeto que contiene los valores que se pasarán al método GET en la ruta nombrada. Se usará para devolver el objeto creado
contenido
Es el objeto que se creó.
El ejemplo anterior muestra la implementación de dos métodos de un controlador simple con un método GET simple con el nombre vinculado y el método POST que crea un nuevo objeto.
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);
}
}
}
IMPORTANTE
Observe que el primer parámetro en CreatedAtRoute (routeName) debe ser el mismo en la definición del Nombre en el método Get.
El objeto en el segundo parámetro necesitará tener los campos necesarios que use para recuperar el recurso en el método Get, puede decir que es un subconjunto del objeto creado por sí mismo
El último parámetro es el objeto de empresa recibido en la solicitud del cuerpo en su forma completa.
FINALMENTE
Como resultado final, cuando se publique la publicación para crear una nueva empresa en esta API, devolverá una ruta como 'api / company / {id}' que le devolverá el recurso recién creado