เริ่มแรกที่ฝั่ง Client เขียน code ส่ง Request ดังนี้ ก่อน
var data2 = {
"width": "1366",
"heigth": "768",
"map_id": "No",
"DB": "LinkFreeDB"
};
$.ajax({
type: "POST",
url: http://localhost:32197/api/values,
data: JSON.stringify(data2),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
console.log('OK');
}
});
ต่อมา มาเขียน code ที่ฝั่ง WebAPI โดยเขียน code รับ request ดังนี้
// POST api/valuespublic HttpResponseMessage Post(HttpRequestMessage req)
{ string str_req = req.Content.ReadAsStringAsync().Result;
DataModel model = req.Content.ReadAsAsync<DataModel>().Result;
//return new HttpResponseMessage()
//{
// Content = new StringContent("POST: Test message")
//};
return Request.CreateResponse<DataModel>(HttpStatusCode.OK, model, System.Net.Http.Formatting.JsonMediaTypeFormatter.DefaultMediaType );
}
อธิบายในส่วน ของ code
บรรทัดแรกคือ การอ่าน ค่า ทั้งหมดที่รับ มา ผลลัพธ์ ที่ได้คือ ได้ json string ในรูปแบบ ดังนี้
{"width": "1366","heigth": "768","map_id": "No","DB": "LinkFreeDB" }
บรรทัดที่ 2 คือ การอ่าน ค่า แล้วมาเก็บลงใน class model ที่ชื่อว่า DataModel โดยมีการสร้างไว้ ดังนี้ class DataModel
{
public string width { get; set;}
public string heigth{get; set;}
public string map_id { get; set;}
public string DB { get; set;}
}
บรรทัดที่ 3 ส่วนที่ comment ไว้ คือ ตัวอย่างที่ต้องการ return ค่า string กลับไป แต่เราไม่ได้ใช้ เลย comment ทิ้งไว้
//return new HttpResponseMessage()
//{
// Content = new StringContent("POST: Test message")
//};
บรรทัด สุดท้าย คือ การ return ค่า กลับไป ในรูปแบบ ของ Json ครับ
return Request.CreateResponse<DataModel>(HttpStatusCode.OK, model, System.Net.Http.Formatting.JsonMediaTypeFormatter.DefaultMediaType );
เมื่อเสร็จแล้วอย่าเพิ่งดีใจ ยังมีต่อ ภาค 2 ในส่วนของ client เมื่อได้รับ response ตอบกลับ ต้องจัดการอย่างไรกับ Json ที่ได้รับ
เดี่ยวผมจะเขียนต่อ ในภาค 2 ครับ
ขอบคุณครับ