ใน WebAPI. net core คุณใช้วิธีนี้เพื่อส่งคืนรหัส 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 คุณสามารถพูดได้ว่าเป็นส่วนย่อยของอ็อบเจ็กต์ที่สร้างขึ้นเอง
พารามิเตอร์สุดท้ายคือวัตถุของ บริษัท ที่ได้รับในคำขอเนื้อหาในรูปแบบเต็ม
FINALY
ผลสุดท้ายเมื่อโพสต์เพื่อสร้าง บริษัท ใหม่ที่สร้างขึ้นใน API นี้คุณจะส่งคืนเส้นทางเช่น "api / company / {id}" ซึ่งจะส่งคืนทรัพยากรที่สร้างขึ้นใหม่ให้คุณ