இந்த கட்டுரையில் போஸ்ட் மெத்தட் ASP.NET WEB API-இல் எவ்வாறு பயன்படுத்துவது என காண இருக்கின்றோம். இதற்கு முந்தைய இதழில் வெளியான ASP.NET WEB API மற்றும் எஸ்கியூஎல் சர்வரும் என்ற கட்டுரையின் தொடர்ச்சி இது.
ASP.NET WEB API -ல் போஸ்ட் மெத்தட் ஆனது டேட்டா பேசில் உள்ள டேபிளில் புதிய ரோ ஒன்றை இன்செர்ட் செய்ய பயன்படுகின்றது.
இப்பொழுது Employees டேபிளில் புதிய employee பற்றிய டேட்டாவை இன்செர்ட் செய்வது குறித்து காண இருக்கின்றோம்.
கண்ட் ரோலரில் EmployeesController என்பதில் post மெத்தட் ஒன்றை எழுதவும்.இதற்கு Employee கிளாசின் ஆப்ஜெக்ட் ஆக ஒரு employee ஆப்ஜெக்டை பாராமீட்டராக அனுப்புவோம்.எம்ப்ளாயி பாராமீட்டர் ஆனது FromBody என்ற ஆட்ரிபியூட் உடன் குறிப்பிடவும்.இது வெப் API க்கு டேட்டாவை ரிகுவஸ்ட் பாடியில் இருந்து எடுத்துக்கொள்ளுமாறு கூறுகின்றது.
public void Post([FromBody] Employee employee)
{
using (EmployeeDBEntities entities = new EmployeeDBEntities())
{
entities.Employees.Add(employee);
entities.SaveChanges();
}
}
அப்ளீகேசனை பில்ட் செய்து fiddler என்பதை இயக்கவும்.
1. http verb என்பதை post என்று செலெக்ட் செய்யவும்
2. content-type :application/json என்று குறிப்பிடவும். இது சர்வருக்கு இன்செர்ட் செய்யப்பட வேண்டிய டேட்டா JSON ஃபார்மட்டில் இருக்கின்றது என்று கூறுகின்றது.
3. REQUEST BODY ஆனதில் கீழே உள்ள படத்தில் உள்ளவாறு JSON பார்மட்டில் டேட்டாவை குறிப்பிடவும்.
4. கடைசியில் EXECUTE என்ற பட்டனை கிளிக் செய்யவும்.
மேலே உள்ள நிரல் சர்வரில் டேட்டாவை இன்செர்ட் செய்கின்றது. என்ன பிரச்சனை எனில் போஸ்ட் மெத்தடின் ரிடர்ன் டைப்பாக VOID என குறிப்பிட்டுள்ளோம்.
எனவே ஸ்டேட்டஸ் கோட் 204 NOT FOUND எனக்காட்டுகின்றது.உண்மையில் புதிதாக டேட்டாவை ஆட் செய்யும் பொழுது 201 item created எனக் காட்ட வேண்ட்டும்.
அதை அடைய போஸ்ட் மெத்தடை கீழே உள்ளவாறு மாற்றியமைக்கவும்.
public HttpResponseMessage Post([FromBody] Employee employee)
{
try
{
using (EmployeeDBEntities entities = new EmployeeDBEntities())
{
entities.Employees.Add(employee);
entities.SaveChanges();
var message = Request.CreateResponse(HttpStatusCode.Created, employee);
message.Headers.Location = new Uri(Request.RequestUri +
employee.ID.ToString());
return message;
}
}
catch (Exception ex)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex);
}
}
இப்பொழுது ஃபிட்லருக்கு மற்றொரு போஸ்ட் ரிகுவஸ்ட் ஒன்றை அனுப்பவும். 201 item created என செய்தி காட்டப்படுவதை கவனிக்கவும்.அத்துடன் புதிதாக உருவாக்கப்பட்ட டேட்டாவின் url ஆனதயும் அனுப்புகின்றது.
இப்பொழுது Get மெத்தடையும் மாற்றியமைப்போம்.ஏற்கனவே இல்லாத டேட்டாவின் id குறிப்பிட்டு அதை காணும் பொழுது நல் மதிப்பு ரிடர்ன் செய்யப்பட்டு 200 ok என காட்டுகின்றது. REST -ன் ஸ்டாண்டர்ட் படி ஒரு ஐட்டம் இல்லாத பொழுது 204 NOT FOUND எனக்காட்ட வேண்டும்.அதன் படி மாற்றியமைப்போம்.
public HttpResponseMessage Get(int id)
{
using (EmployeeDBEntities entities = new EmployeeDBEntities())
{
var entity = entities.Employees.FirstOrDefault(e => e.ID == id);
if (entity != null)
{
return Request.CreateResponse(HttpStatusCode.OK, entity);
}
else
{
return Request.CreateErrorResponse(HttpStatusCode.NotFound,
"Employee with Id " + id.ToString() + " not found");
}
}
}
இப்பொழுது employee id 101 என்ற டேட்டாவை பெறுமாறு ரிகுவஸ்ட் அனுப்பினால் 404 not found என்பதுடன் "Employee with Id 101 not found"
பிழை சுட்டப்படுகின்றது.
கவனத்தில் கொள்வதற்கு.
1. ஒரு மெத்தடின் ரிடர்ன் டைப் வாய்ட் என்றால் 204 no content என்பது ரிடர்ன் ஆகின்றது.
2. புதிய ஐட்டம் உருவாக்கும் பொழுது 201 item created எனக்காட்ட வேண்டும்.
3. 201 உடன் புதிதாக உருவாக்கபட்ட ஐடியின் url என்பதையும் காட்ட வேண்டும்.
4. ஒரு குறிப்பிட்ட ஐட்டம் இல்லாத பொழுது 404 not found என்பதுடன்
"Employee with Id 101 not found" என்பது போன்று செய்தியும் காட்டப்பட வேண்டும்.
நன்றி.
முத்து கார்த்திகேயன்,மதுரை.
No comments:
Post a Comment