วันเสาร์ที่ 25 สิงหาคม พ.ศ. 2561

การสร้า้ง ASP.NET WEB API #3 เรื่อง Model Binding

สวัสดีครับหลังจากที่ได้แชร์
- Flow การทำงานของ ASP .NET WEB API
(http://cakeknowledgeblogs.blogspot.com/2018/07/aspnet-web-api-2-pipeline.html)

- การสร้าง ASP .NET WEB API
(http://cakeknowledgeblogs.blogspot.com/2018/07/aspnet-web-api.html)

- การสร้าง ASP .NET WEB API #2
(http://cakeknowledgeblogs.blogspot.com/2018/08/aspnet-web-api-2.html)

วันเลยมาต่อการสร้าง ASP .NET WEB API#3 กันครับซึ่งวันนี้ที่ผมอยากแชร์คือเรื่องเกี่ยวกับ Model Binding

"แล้ว Model Binding คืออะไร"
Model Binding คือ การแปลงค่าข้อมูลที่เป็น String ที่รับมาให้อยู่ในตัวแปลที่อยู่ใน Parameter Method ตาม Type ต่างๆที่เรากำหนด ซึ่งใน ASP.NET WEB API ได้มีเครื่องมือจัดการแปลงข้อมูลให้เรียบร้อยแล้ว


รูปภาพ Model Binding
จากรูปจะเห็นว่าถ้าเราส่งมาข้อมูลผ่านทาง HTTPGET จะเป็นข้อมูลที่อยู่ใน Query String แล้วตัว ASP.NET WEB API จะทำการแปลงประเภทข้อมูลเป็น string เก็บใส่ตัวแปลที่ชื่อว่า nameและ แปลงประเภทข้อมูลเป็น int เก็บใส่ตัวแปรที่ชื่อว่า page ให้เอง ซึ่งการแปลงข้อมูลจากการเรียกไปอยู่ Paramter ใน Method ที่เรากำหนดเราเรียกว่า Model Binding ครับ

เพื่อให้เข้าใจได้ง่ายจึงได้ทำ Video วิธีการเขียน Code ในส่วนของ Model Binding ดังนี้ครับ



วันศุกร์ที่ 17 สิงหาคม พ.ศ. 2561

การสร้าง ASP.NET WEB API #2

    สวัสดีครับหลังจากที่ได้แชร์เกี่ยวกับ Flow การทำงาน (http://cakeknowledgeblogs.blogspot.com/2018/07/aspnet-web-api-2-pipeline.html) และ การสร้าง ASP.NET WEB API (http://cakeknowledgeblogs.blogspot.com/2018/07/aspnet-web-api.html) แต่ยังไม่ทราบถึงวิธีการเขียนไปใชจริง วันนี้เลยมาแชร์การเขียนไปใช้จริงเบื้องต้นครับ ซึ่งวันนี้ผมจะแบ่งวีดีโอ 3 ส่วนดังนี้ครับ

   1.    การสร้าง Web API และการ Config เบื้องต้น


   2.    การเขียน Code ส่วน Message Handler



   3.    การเขียนส่วน Attribute Routing สำหรับการเปลี่ยนชื่อ URI Service


วันเสาร์ที่ 4 สิงหาคม พ.ศ. 2561

RestAPI

          สิ่งท่ี่ควรมีความรู้ก่อนอ่านบืความนี้คือ

  1.      ความหมายของ Web API 
  2.      ความหมายของ Web Service
  3.      การเรียก Web Service ผ่าน HTTP

Rest API คืออะไร
บางคนอาจยังไม่เคยได้ยินหรือบางคนเคยได้ยินหรือไม่เคยรู้จริงๆว่า Rest API เนี่ยคืออะไรกันแน่ ซึ่งถ้าเป็นความหมายแบบกระชับนี่ก็คือ เป็น API ที่จัดรูปแบบการเรียกแบบ HTTP (GET,POST,PUT,DELETE) ให้เข้าเป็นมาตรฐานมากขึ้น
 จากเมื่อก่อนในการเขียน Web API แต่ละครั้งผ่าน HTTP จะไม่มีการกำหนดรูปแบบการเรียกที่ตายตัวจึงทำให้เราไม่สามารถดู แค่ชื่อ Web Service แล้วสามารถเดาได้เลยว่าคือเว็บ Service สำหรับทำอะไรกันแน่ Rest API จึงได้ตั้งข้อกำหนดพื้นฐานดังนี้
          HTTP
          ถ้าเป็น แบบ GET คือ การขอข้อมูลทั้งหมด
          ถ้าเป็น แบบ POST คือ การ สร้างข้อมูลขึ้นมาใหม่
          ถ้าเป็น แบบ PUT คือ การแก้ไขข้อมูล
          ถ้าเป็นแบบ DELETE คือ การลบข้อมูล

รูปแบบของ URL
  •  URL จะเป็น Noun ไม่ควรเป็น Verb และควรเป็น Noun แบบพหูพจน์ถ้าเป็นไปได้ ตัวอย่างเช่น
                /books     ให้หมายถึง ดึงข้อมูลหนังสือทั้งหมดถ้าเป็นแบบ GET
                /books     ให้หมายถึง สร้างหนังสือใหม่ทั้งหมดถ้าเป็นแบบ POST
                /books     ให้หมายถึง แก้ไขข้อมูลหนังสือทั้งหมดถ้าเป็นแบบ PUT
                /books     ให้หมายถึง ลบข้อมูลหนังสือทั้งหมดถ้าเป็นแบบ DELETE   
  •  ใช้ Sub name ในการเชิ่อมความสัมพันธืของข้อมูล ตัวอย่างเช่น
                /books/2   ให้หมายถึง ดึงข้อมูลหนังสือที่เป็น ID = 2 ถ้าเป็น แบบ GET
                /books/2   ให้หมายถึง สร้างหนังสือใหม่ที่เป็น ID = 2 ถ้าเป็น แบบ POST
                /books/2   ให้หมายถึง แก้ไขข้อมูลหนังสือที่เป็น ID = 2 ถ้าเป็น แบบ PUT
                /books/2   ให้หมายถึง ลบข้อมูลหนังสือที่เป็น ID = 2 ถ้าเป็น แบบ DELETE

  •  URL ควรมีระบุ version api เพื่อรองรับการเปลี่ยนแปลง version api ตัวอย่างเช่น
               /api/v1/books หมายถึง เราใช้ API version1 ในการดึงข้อมูลหนังสือทั้งหมดถ้าเป็นแบบ GET
               /api/v1/books หมายถึง เราใช้ API version1 ในการสร้างหนังสือใหม่ที่เป็น ID = 2 ถ้าเป็นแบบ  POST 
               /api/v1/books หมายถึง เราใช้ API version1 ในการแก้ไขข้อมูลหนังสือทั้งหมดถ้าเป็นแบบ PUT
               /api/v1/books หมายถึง เราใช้ API version1 ในการลบข้อมูลหนังสือทั้งหมดถ้าเป็นแบบ DELETE  
  •   หากการดึงข้อมูลที่ซับซ้อนให้ทำการ Query String ด้วย GET เช่น

              /api/v1/books?field=name,price,author,categoies&sort=asc ให้หมายถึง ใช้ API version ที่ 1 มาดึงข้อมูลหนังสือทั้งหมดโดยต้องการเฉพาะ Field name,price,author, categories มาแสดงพร้อมทั้งให้เรียงตามชื่อหนังสือจากน้อยไปมาก

HTTP Response Code
  • ควรมีการ Return HTTP Status Code กลับทุกครั้ง 
  • หากมี ERROR ควร Return Status Code ให้ถูกต้องตามสถานะ

แนะนำควรใช้ Status Code 10 อันดับแรกดังนี้

  •  200 OK
  •  201 CREATED  -  [POST,PUT]
  •  204 NO CONTENT  -  [DELETE,PUT]
  •  400 BAD REQUEST
  •  401 UNAUTHORIZED
  •  403 FORBIDDEN
  •  404 NO FOUND
  •  405 METHOD NOT ALLOWED
  •  409 CONFLICT
  •  500 INTERNAL SERVER ERROR

หวังว่าโพสน์นี้จะช่วยเพิ่มความเข้าใจและมีประโยชน์ครับ ขอบคุณครับ
Refference
https://www.restapitutorial.com/lessons/restquicktips.html
https://www.algorithmtut.com/เลิกเขียน-restful-api-แบบแย่ๆ/