Na WebAPI principal .net, você usa esse método para retornar um código 201, o que significa que o objeto foi criado.
[Microsoft.AspNetCore.Mvc.NonAction]
public virtual Microsoft.AspNetCore.Mvc.CreatedAtRouteResult CreatedAtRoute (string routeName, object routeValues, object content);
Como você pode ver acima, o CreatedAtRoute pode receber 3 parâmetros:
routeName
É o nome que você deve colocar no método que será o URI que obteria esse recurso após a criação.
routeValues
É o objeto que contém os valores que serão passados para o método GET na rota nomeada. Será usado para retornar o objeto criado
conteúdo
É o objeto que foi criado.
O exemplo acima mostra a implementação de dois métodos de um controlador simples com um método GET simples com o nome vinculado e o método POST que cria um novo 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 o primeiro parâmetro em CreatedAtRoute (routeName) deve ser o mesmo na definição do Name no método Get.
O objeto no segundo parâmetro precisará ter os campos necessários que você usa para recuperar o recurso no método Get, você pode dizer que é um subconjunto do objeto criado por si mesmo
O último parâmetro é o objeto da empresa recebido na solicitação do corpo em seu formato completo.
FINALMENTE
Como resultado final, quando a postagem para criar uma nova empresa for criada para essa API, você retornará uma rota como 'api / company / {id}' que retornará para você o recurso recém-criado