В 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}», который вернет вам вновь созданный ресурс.
person
Bruno Bastos
schedule
09.05.2020