Trong WebAPI lõi .net, bạn sử dụng phương thức này để trả về mã 201, có nghĩa là đối tượng đã được tạo.
[Microsoft.AspNetCore.Mvc.NonAction]
public virtual Microsoft.AspNetCore.Mvc.CreatedAtRouteResult CreatedAtRoute (string routeName, object routeValues, object content);
Như bạn có thể thấy ở trên, createdAtRoute có thể nhận được 3 tham số:
routeName
là tên mà bạn phải đặt cho phương thức sẽ là URI sẽ lấy tài nguyên đó sau khi được tạo.
routeValues
Đó là đối tượng chứa các giá trị sẽ được truyền cho phương thức GET tại tuyến đã đặt tên. Nó sẽ được sử dụng để trả về đối tượng đã tạo
nội dung
Đó là đối tượng đã được tạo.
Ví dụ trên cho thấy việc thực hiện hai phương thức của bộ điều khiển đơn giản với phương thức GET đơn giản với tên ngoại quan và phương thức POST tạo ra một đối tượng mới.
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);
}
}
}
QUAN TRỌNG
Lưu ý rằng tham số đầu tiên tại createdAtRoute (routeName), phải giống nhau theo định nghĩa của Tên tại phương thức Get.
Đối tượng trên tham số thứ hai sẽ cần phải có các trường cần thiết mà bạn sử dụng để truy xuất tài nguyên trên phương thức Get, bạn có thể nói rằng đó là một tập hợp con của chính đối tượng được tạo
Tham số cuối cùng là đối tượng công ty nhận được trong yêu cầu cơ thể ở dạng đầy đủ.
CUỐI CÙNG
Kết quả cuối cùng, khi Bài đăng để tạo một công ty mới được tạo cho API này, bạn sẽ trả lại một tuyến đường như 'api / company / {id}' sẽ trả lại cho bạn tài nguyên mới được tạo