Nell'API Web di base .net, questo metodo viene utilizzato per restituire un codice 201, il che significa che l'oggetto è stato creato.
[Microsoft.AspNetCore.Mvc.NonAction]
public virtual Microsoft.AspNetCore.Mvc.CreatedAtRouteResult CreatedAtRoute (string routeName, object routeValues, object content);
Come puoi vedere sopra, CreatedAtRoute può ricevere 3 parametri:
routeName
È il nome che è necessario inserire nel metodo che sarà l'URI che otterrà quella risorsa dopo la creazione.
routeValues
È l'oggetto che contiene i valori che verranno passati al metodo GET sulla route denominata. Verrà utilizzato per restituire l'oggetto creato
contenuto
È l'oggetto che è stato creato.
L'esempio sopra mostra l'implementazione di due metodi di un semplice controller con un semplice metodo GET con il nome associato e il metodo POST che crea un nuovo oggetto.
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
Si noti che il primo parametro in CreatedAtRoute (routeName), deve essere lo stesso nella definizione del nome nel metodo Get.
L'oggetto sul secondo parametro dovrà avere i campi necessari che usi per recuperare la risorsa sul metodo Get, puoi dire che è un sottoinsieme dell'oggetto creato da solo
L'ultimo parametro è l'oggetto società ricevuto nella richiesta del corpo nella sua forma completa.
Finaly
Come risultato finale, quando Post per creare una nuova società è stato creato per questa API, restituirai una rotta come 'api / company / {id}' che ti restituirà la risorsa appena creata