บทช่วยสอนเกี่ยวกับ RESTful Web Services: ตัวอย่าง REST API

⚡ สรุปอย่างชาญฉลาด

RESTful Web Services (RESTful Web Services) เป็นเว็บเซอร์วิสที่มีน้ำหนักเบาและไม่ต้องเก็บสถานะ (stateless) สำหรับการแลกเปลี่ยนข้อมูลผ่าน HTTP โดยใช้คำสั่งมาตรฐาน โดยจะเปิดเผยทรัพยากรผ่านคำสั่งที่ชัดเจน URLซึ่งช่วยให้การสื่อสารระหว่างไคลเอ็นต์ เซิร์ฟเวอร์ อุปกรณ์เคลื่อนที่ และแพลตฟอร์มคลาวด์และ AI สมัยใหม่ที่กระจายอยู่ทั่วพื้นที่ สามารถปรับขนาดได้และไม่ขึ้นอยู่กับแพลตฟอร์มใดๆ

  • 📊 คำกริยาหลัก: GET, POST, PUT และ DELETE เชื่อมโยงโดยตรงกับการดำเนินการอ่าน สร้าง อัปเดต และลบข้อมูลที่กระทำกับทรัพยากรของเซิร์ฟเวอร์
  • 🧩 องค์ประกอบสำคัญ: ทรัพยากร คำกริยาที่ใช้ในการร้องขอ ส่วนหัว เนื้อหาในการร้องขอ เนื้อหาในการตอบกลับ และรหัสสถานะ ล้วนเป็นองค์ประกอบที่กำหนดปฏิสัมพันธ์ REST ทุกอย่าง
  • 🌐 Archiเทคเจอร์: REST ใช้โมเดลไคลเอ็นต์-เซิร์ฟเวอร์ที่คงไว้ซึ่งสถานะไร้สถานะ มีโครงสร้างเป็นชั้น และรองรับแคชได้ดี เพื่อการร้องขอซ้ำที่รวดเร็วและเชื่อถือได้มากขึ้น
  • 🛠️ การดำเนินการ: ASP.NET ที่ใช้เทมเพลตบริการ WCF ช่วยให้นักพัฒนาสามารถสร้างเอนด์พอยต์ RESTful ใน Visual Studio ได้โดยใช้การตั้งค่าเพียงเล็กน้อย
  • 🧪 การทดสอบ: เบราว์เซอร์จัดการการเรียกใช้แบบ GET ในขณะที่ Fiddler or Postman ส่งคำขอ POST, PUT และ DELETE เพื่อตรวจสอบความถูกต้อง
  • 🔐 ปฏิบัติที่ดีที่สุด: HTTPS, การตรวจสอบสิทธิ์ด้วยโทเค็น, รหัสสถานะที่มีความหมาย และการกำหนดเวอร์ชัน URLรักษาความปลอดภัยและทำให้ REST API ในระบบการผลิตสามารถบำรุงรักษาได้ง่าย
  • 🤖 การรวม AI: OpenAI, Anthropic และ Google เผยแพร่ REST API ที่ขับเคลื่อนแชทบอท ตัวแทนอัตโนมัติ และเวิร์กโฟลว์การเรียนรู้ของเครื่อง

บทช่วยสอนบริการเว็บ RESTful

บริการเว็บ Restful คืออะไร?

บริการเว็บพักผ่อน RESTful Web Service คือบริการที่มีน้ำหนักเบา บำรุงรักษาง่าย และปรับขนาดได้ ซึ่งสร้างขึ้นบนสถาปัตยกรรม REST RESTful Web Service จะเปิดเผย API จากแอปพลิเคชันของคุณในลักษณะที่ปลอดภัย สม่ำเสมอ และไม่มีสถานะ (stateless) ให้แก่ไคลเอนต์ที่เรียกใช้ จากนั้นไคลเอนต์ที่เรียกใช้สามารถดำเนินการตามที่กำหนดไว้ล่วงหน้าโดยใช้บริการ RESTful นั้นได้ โปรโตคอลพื้นฐานของ REST คือ HTTP และ REST ย่อมาจาก REpresentational State Transfer

กล่าวโดยง่าย REST กำหนดมาตรฐานวิธีการสร้าง อ่าน อัปเดต และลบทรัพยากร เช่น เอกสาร รูปภาพ หรือระเบียนฐานข้อมูล ผ่านทางเว็บ เนื่องจากใช้โปรโตคอล HTTP ทั่วไป ภาษาโปรแกรมหรืออุปกรณ์เกือบทุกชนิดจึงสามารถใช้งานบริการ RESTful ได้โดยไม่ต้องใช้เครื่องมือพิเศษใดๆ

เหตุใดจึงควรใช้บริการเว็บแบบ RESTful?

ก่อนที่จะเจาะลึกรายละเอียดทางเทคนิค เราควรทำความเข้าใจก่อนว่าทำไม REST ถึงได้รับความนิยมอย่างมาก บริการเว็บแบบ RESTful ได้รับความนิยมเนื่องจากเหตุผลดังต่อไปนี้:

1. ภาษาและสภาพแวดล้อมที่หลากหลาย – นี่คือหนึ่งในเหตุผลพื้นฐาน ซึ่งเหมือนกับที่เราได้เห็นมาแล้วสำหรับ สบู่ เช่นกัน

  • มันช่วยให้เว็บแอปพลิเคชันที่สร้างขึ้นด้วยภาษาโปรแกรมต่างๆ สามารถสื่อสารกันได้
  • ด้วยความช่วยเหลือของบริการ Restful แอปพลิเคชันเว็บเหล่านี้สามารถทำงานในสภาพแวดล้อมที่แตกต่างกันได้ บางแอปพลิเคชันอาจอยู่บน Windowsและอื่น ๆ อาจเป็นบน Linux

ในท้ายที่สุด ไม่ว่าสภาพแวดล้อมจะเป็นอย่างไร ผลลัพธ์ควรจะเหมือนกันเสมอ นั่นคือ แอปพลิเคชันต่างๆ ควรจะสามารถสื่อสารกันได้ บริการเว็บแบบ RESTful มอบความยืดหยุ่นนี้ให้กับแอปพลิเคชันที่สร้างขึ้นบนภาษาโปรแกรมและแพลตฟอร์มต่างๆ

ภาพด้านล่างแสดงตัวอย่างของเว็บแอปพลิเคชันที่มีความต้องการในการสื่อสารกับแอปพลิเคชันอื่นๆ เช่น Facebook, Twitter และอื่นๆ Google.

หากแอปพลิเคชันไคลเอ็นต์ต้องทำงานร่วมกับเว็บไซต์ต่างๆ เช่น Facebook และ Twitter นักพัฒนาจะต้องทราบว่าเว็บไซต์เหล่านั้นสร้างขึ้นบนภาษาและแพลตฟอร์มใด จากนั้นจึงจะสามารถเขียนโค้ดเชื่อมต่อได้ แต่แนวทางนี้อาจกลายเป็นฝันร้ายในการบำรุงรักษาได้

แต่ในทางกลับกัน Facebook, Twitter และ Google เปิดเผยฟังก์ชันการทำงานในรูปแบบของเว็บเซอร์วิสแบบ RESTful ซึ่งช่วยให้แอปพลิเคชันไคลเอ็นต์ใด ๆ สามารถเรียกใช้เว็บเซอร์วิสเหล่านี้ผ่าน REST ได้ โดยไม่คำนึงถึงเทคโนโลยีพื้นฐาน

เหตุใดจึงควรใช้ RESTful Web Services

2. กิจกรรมอุปกรณ์ – ในปัจจุบัน ทุกอย่างต้องดำเนินการต่อไป โทรศัพท์มือถือ อุปกรณ์ต่างๆ ไม่ว่าจะเป็นโทรศัพท์มือถือ โน้ตบุ๊ก หรือแม้แต่ระบบในรถยนต์

ลองนึกภาพถึงความพยายามมากมายที่ต้องใช้ในการเขียนโค้ดแอปพลิเคชันบนอุปกรณ์เหล่านี้เพื่อให้สามารถสื่อสารกับแอปพลิเคชันเว็บทั่วไปได้ อย่างที่กล่าวไว้ในข้อแรกแล้ว Restful API ทำให้งานนี้ง่ายขึ้น เพราะคุณไม่จำเป็นต้องรู้ถึงเลเยอร์พื้นฐานของอุปกรณ์เลย

3. เหตุการณ์ของคลาวด์ – ทุกอย่างกำลังย้ายไปสู่ระบบคลาวด์ แอปพลิเคชันต่างๆ กำลังค่อยๆ ย้ายไปใช้ระบบคลาวด์ เช่น Azure or Amazon. Azure และ Amazon ปัจจุบันมี API จำนวนมากที่ใช้สถาปัตยกรรม RESTful ดังนั้นแอปพลิเคชันต่างๆ จึงจำเป็นต้องได้รับการพัฒนาให้เข้ากันได้กับระบบคลาวด์ เนื่องจากสถาปัตยกรรมบนคลาวด์ทั้งหมดทำงานบนหลักการ REST จึงเป็นเรื่องสมเหตุสมผลที่เว็บเซอร์วิสควรได้รับการเขียนโปรแกรมบนสถาปัตยกรรม REST เพื่อให้สามารถใช้ประโยชน์จากบริการคลาวด์ได้อย่างเต็มประสิทธิภาพ

องค์ประกอบสำคัญที่สงบ

เว็บเซอร์วิส REST พัฒนาไปไกลมากนับตั้งแต่เริ่มแรก ในปี 2002 องค์กร Web Consortium ได้เผยแพร่คำจำกัดความของเว็บเซอร์วิส WSDL และ SOAP ซึ่งกลายเป็นมาตรฐานในการใช้งานเว็บเซอร์วิส

ในปี 2004 สมาคมเว็บได้เผยแพร่คำจำกัดความของมาตรฐานเพิ่มเติมที่เรียกว่า RESTful ในช่วงหลายปีที่ผ่านมา มาตรฐานนี้ได้รับความนิยมอย่างมากและปัจจุบันถูกนำไปใช้โดยเว็บไซต์ยอดนิยมมากมายทั่วโลก รวมถึง Facebook และ Twitter

REST คือวิธีการเข้าถึงทรัพยากรที่อยู่ในสภาพแวดล้อมเฉพาะ ตัวอย่างเช่น คุณอาจมีเซิร์ฟเวอร์ที่จัดเก็บเอกสาร รูปภาพ หรือวิดีโอที่สำคัญ ทั้งหมดนี้ล้วนเป็นตัวอย่างของทรัพยากร หากไคลเอ็นต์ เช่น เว็บเบราว์เซอร์ ต้องการทรัพยากรเหล่านี้ ก็จะต้องส่งคำขอไปยังเซิร์ฟเวอร์ บริการ REST กำหนดวิธีการมาตรฐานในการเข้าถึงทรัพยากรเหล่านี้

องค์ประกอบสำคัญของการใช้งาน RESTful มีดังนี้:

  1. แหล่งข้อมูล – องค์ประกอบสำคัญประการแรกคือตัวทรัพยากรเอง สมมติว่าแอปพลิเคชันบนเว็บบนเซิร์ฟเวอร์มีข้อมูลของพนักงานหลายคน สมมติว่า URL ของแอปพลิเคชันเว็บคือ https://demo.guru99.comตอนนี้ หากต้องการเข้าถึงข้อมูลพนักงานผ่านบริการ REST สามารถใช้คำสั่งต่อไปนี้ได้ https://demo.guru99.com/employee/1คำสั่งนี้บอกให้เว็บเซิร์ฟเวอร์แสดงรายละเอียดของพนักงานที่มีหมายเลขพนักงานเป็น 1
  2. ขอกริยา – คำสั่งเหล่านี้อธิบายถึงสิ่งที่คุณต้องการทำกับทรัพยากรนั้น เบราว์เซอร์จะใช้คำสั่ง GET เพื่อสั่งการไปยังปลายทางว่าต้องการดึงข้อมูล อย่างไรก็ตาม ยังมีคำสั่งอื่นๆ อีกมากมาย เช่น POST, PUT และ DELETE ดังนั้น ในกรณีตัวอย่างนี้ https://demo.guru99.com/employee/1เว็บเบราว์เซอร์กำลังส่งคำสั่ง GET เนื่องจากต้องการดึงรายละเอียดของข้อมูลพนักงาน
  3. ขอส่วนหัว – นี่คือคำแนะนำเพิ่มเติมที่ส่งมาพร้อมกับคำขอ ซึ่งอาจระบุประเภทของการตอบกลับที่ต้องการ หรือรายละเอียดการอนุญาต
  4. ขอร่างกาย – นี่คือข้อมูลที่ส่งไปพร้อมกับคำขอ โดยปกติแล้วข้อมูลจะถูกส่งไปในส่วนเนื้อหาของคำขอเมื่อมีการส่งคำขอ POST ไปยังเว็บเซอร์วิส REST ในการเรียกใช้ POST นั้น ไคลเอนต์จะบอกเว็บเซอร์วิส REST ว่าต้องการเพิ่มทรัพยากรลงในเซิร์ฟเวอร์ ดังนั้นส่วนเนื้อหาของคำขอจึงจะมีรายละเอียดของทรัพยากรที่ต้องการเพิ่มเข้าไป
  5. ร่างกายตอบสนอง – นี่คือส่วนหลักของคำตอบ ดังนั้น ในตัวอย่าง RESTful API ของเรา หากเราสอบถามเว็บเซิร์ฟเวอร์ผ่านคำขอ https://demo.guru99.com/employee/1เว็บเซิร์ฟเวอร์อาจส่งเอกสาร XML ที่มีรายละเอียดทั้งหมดของพนักงานในส่วนเนื้อหาของการตอบกลับกลับมา
  6. รหัสสถานะการตอบสนอง – นี่คือรหัสทั่วไปที่ส่งกลับมาพร้อมกับการตอบกลับจากเว็บเซิร์ฟเวอร์ ตัวอย่างเช่น รหัส 200 ซึ่งโดยปกติจะส่งกลับเมื่อไม่มีข้อผิดพลาดใดๆ ขณะส่งการตอบกลับไปยังไคลเอ็นต์

วิธีการพักผ่อน

แผนภาพด้านล่างแสดงคำกริยาส่วนใหญ่ (POST, GET, PUT และ DELETE) และตัวอย่าง REST API ที่แสดงความหมายของแต่ละคำสั่ง

สมมติว่าเรามีเว็บเซอร์วิส RESTful ที่กำหนดไว้ที่ตำแหน่งนั้นแล้ว https://demo.guru99.com/employeeเมื่อไคลเอ็นต์ส่งคำขอใดๆ ไปยังเว็บเซอร์วิสนี้ ไคลเอ็นต์สามารถระบุคำกริยา HTTP ปกติได้ ได้แก่ GET, POST, DELETE และ PUT ด้านล่างนี้คือสิ่งที่จะเกิดขึ้นหากไคลเอ็นต์ส่งคำกริยาที่เกี่ยวข้อง

  1. POST – ข้อมูลนี้จะใช้ในการสร้างพนักงานใหม่โดยใช้บริการเว็บ RESTful
  2. GET – ฟังก์ชันนี้จะใช้เพื่อดึงรายชื่อพนักงานทั้งหมดที่ใช้งานเว็บเซอร์วิส RESTful
  3. PUT – ข้อมูลนี้จะใช้สำหรับอัปเดตข้อมูลพนักงานทุกคนที่ใช้บริการเว็บ RESTful
  4. ลบ – คำสั่งนี้จะใช้เพื่อลบพนักงานทั้งหมดที่ใช้บริการ RESTful

ทีนี้ลองมาดูจากมุมมองของข้อมูลเพียงรายการเดียว สมมติว่ามีข้อมูลพนักงานหนึ่งคน หมายเลขพนักงานคือ 1 การกระทำต่อไปนี้จะมีความหมายที่แตกต่างกันไป

  1. POST – กรณีนี้ใช้ไม่ได้ เนื่องจากเรากำลังดึงข้อมูลของพนักงานหมายเลข 1 ซึ่งได้สร้างไว้แล้ว
  2. GET – ข้อมูลนี้จะใช้เพื่อดึงรายละเอียดของพนักงานหมายเลข 1 โดยใช้บริการเว็บ RESTful
  3. PUT – ข้อมูลนี้จะใช้เพื่ออัปเดตรายละเอียดของพนักงานหมายเลข 1 โดยใช้บริการเว็บ RESTful
  4. ลบ – ฟังก์ชันนี้ใช้สำหรับลบข้อมูลของพนักงานที่มีหมายเลขพนักงาน 1

วิธีการพักผ่อน

สงบ Archiเทคเจอร์

แอปพลิเคชันหรือสถาปัตยกรรมที่ถือว่าเป็น RESTful หรือ REST-style มีลักษณะดังต่อไปนี้

1. สถานะและฟังก์ชันการทำงานแบ่งออกเป็นทรัพยากรแบบกระจาย – นั่นหมายความว่าทรัพยากรทุกอย่างควรเข้าถึงได้ผ่านคำสั่ง HTTP ปกติ ได้แก่ GET, POST, PUT หรือ DELETE ดังนั้น หากใครต้องการดึงไฟล์จากเซิร์ฟเวอร์ พวกเขาควรจะสามารถส่งคำขอ GET และดึงไฟล์ได้ หากพวกเขาต้องการใส่ไฟล์ลงในเซิร์ฟเวอร์ พวกเขาควรจะสามารถส่งคำขอ POST หรือ PUT ได้ และสุดท้าย หากพวกเขาต้องการลบไฟล์จากเซิร์ฟเวอร์ พวกเขาสามารถส่งคำขอ DELETE ได้

2. โครงสร้างสถาปัตยกรรมเป็นแบบไคลเอ็นต์/เซิร์ฟเวอร์ ไม่มีสถานะ แบ่งเป็นชั้น และรองรับการแคช

  • ไคลเอนต์-เซิร์ฟเวอร์เป็นสถาปัตยกรรมทั่วไป โดยที่เซิร์ฟเวอร์สามารถเป็นเว็บเซิร์ฟเวอร์ที่โฮสต์แอปพลิเคชัน และไคลเอนต์ก็อาจเรียบง่ายได้เหมือนกับเว็บเบราว์เซอร์
  • Stateless หมายความว่าสถานะของแอปพลิเคชันไม่ได้รับการเก็บรักษาไว้ใน REST ตัวอย่างเช่น หากคุณลบทรัพยากรออกจากเซิร์ฟเวอร์โดยใช้คำสั่ง DELETE คุณไม่สามารถคาดหวังได้ว่าข้อมูลการลบจะถูกส่งผ่านไปยังคำขอถัดไป

เพื่อให้แน่ใจว่าทรัพยากรนั้นถูกลบไปแล้ว คุณจะต้องส่งคำขอ GET คำขอ GET จะใช้เพื่อดึงทรัพยากรทั้งหมดบนเซิร์ฟเวอร์ก่อน จากนั้นจึงตรวจสอบว่าทรัพยากรนั้นถูกลบไปแล้วจริงหรือไม่

หลักการและข้อจำกัดที่เหลือ

สถาปัตยกรรม REST มีพื้นฐานมาจากคุณลักษณะบางประการ ซึ่งจะอธิบายรายละเอียดด้านล่าง บริการเว็บ RESTful ใดๆ ก็ตามจะต้องปฏิบัติตามคุณลักษณะเหล่านี้จึงจะเรียกว่าเป็น RESTful ได้ คุณลักษณะเหล่านี้ยังเป็นที่รู้จักในชื่อหลักการออกแบบที่ต้องปฏิบัติตามเมื่อทำงานกับบริการที่ใช้ RESTful เป็นพื้นฐาน

  1. RESTFul ไคลเอ็นต์-เซิร์ฟเวอร์

    หลักการไคลเอ็นต์-เซิร์ฟเวอร์ RESTful

นี่คือข้อกำหนดพื้นฐานที่สุดของสถาปัตยกรรมแบบ REST หมายความว่าเซิร์ฟเวอร์จะมีเว็บเซอร์วิสแบบ RESTful ที่ให้บริการฟังก์ชันการทำงานที่จำเป็นแก่ไคลเอ็นต์ ไคลเอ็นต์ส่งคำขอไปยังเว็บเซอร์วิสบนเซิร์ฟเวอร์ จากนั้นเซิร์ฟเวอร์จะปฏิเสธคำขอหรือตอบรับและให้การตอบสนองที่เหมาะสมแก่ไคลเอ็นต์

  1. ไร้สัญชาติ

แนวคิดของระบบไร้สถานะ (stateless) หมายความว่า ลูกค้าต้องเป็นผู้รับผิดชอบในการส่งข้อมูลที่จำเป็นทั้งหมดไปยังเซิร์ฟเวอร์ เพื่อให้เซิร์ฟเวอร์สามารถประมวลผลการตอบสนองได้อย่างเหมาะสม เซิร์ฟเวอร์ไม่ควรเก็บรักษาข้อมูลใดๆ ระหว่างการร้องขอจากลูกค้า มันเป็นลำดับการถาม-ตอบที่เรียบง่ายและเป็นอิสระ ลูกค้าถามคำถาม และเซิร์ฟเวอร์ตอบคำถามนั้นอย่างเหมาะสม เมื่อลูกค้าถามคำถามอีกครั้ง เซิร์ฟเวอร์จะไม่จดจำสถานการณ์การถาม-ตอบครั้งก่อน และจะต้องตอบคำถามใหม่โดยอิสระ

  1. แคช

หลักการแคช RESTful

แนวคิดเรื่องแคชช่วยแก้ปัญหาเรื่องสถานะไร้สถานะ (statelessness) ที่กล่าวถึงในหัวข้อที่แล้ว เนื่องจากคำขอระหว่างเซิร์ฟเวอร์และไคลเอนต์แต่ละครั้งเป็นอิสระต่อกัน บางครั้งไคลเอนต์อาจส่งคำขอเดียวกันไปยังเซิร์ฟเวอร์อีกครั้ง แม้ว่าจะเคยส่งไปแล้วก็ตาม คำขอนี้จะส่งไปยังเซิร์ฟเวอร์ และเซิร์ฟเวอร์จะให้การตอบกลับ ซึ่งจะเพิ่มปริมาณการรับส่งข้อมูลบนเครือข่าย แคชเป็นแนวคิดที่นำมาใช้ในฝั่งไคลเอนต์เพื่อจัดเก็บคำขอที่เคยส่งไปยังเซิร์ฟเวอร์แล้ว ดังนั้น หากไคลเอนต์ส่งคำขอเดียวกันอีกครั้ง แทนที่จะส่งไปยังเซิร์ฟเวอร์ คำขอจะไปที่แคชและดึงข้อมูลที่ต้องการ ซึ่งจะช่วยลดปริมาณการรับส่งข้อมูลไปมาระหว่างไคลเอนต์และเซิร์ฟเวอร์

  1. ระบบเลเยอร์

แนวคิดของระบบแบบหลายชั้นคือ สามารถเพิ่มชั้นเพิ่มเติมใดๆ ก็ได้ เช่น ชั้นมิดเดิลแวร์ ระหว่างไคลเอนต์และเซิร์ฟเวอร์ที่ให้บริการเว็บเซอร์วิส RESTFul (ชั้นมิดเดิลแวร์เป็นที่ที่สร้างตรรกะทางธุรกิจทั้งหมด ซึ่งอาจเป็นบริการเพิ่มเติมที่ไคลเอนต์โต้ตอบด้วยก่อนที่จะเรียกใช้เว็บเซอร์วิส) แต่การเพิ่มชั้นนี้จะต้องโปร่งใส เพื่อไม่ให้รบกวนการโต้ตอบระหว่างไคลเอนต์และเซิร์ฟเวอร์

  1. อินเทอร์เฟซ/ยูนิฟอร์มคอนtract

นี่คือหลักการพื้นฐานของวิธีการทำงานของเว็บเซอร์วิส RESTful โดยพื้นฐานแล้ว RESTful ทำงานบนเลเยอร์เว็บ HTTP และใช้คำสั่งหลักต่อไปนี้ในการทำงานกับทรัพยากรบนเซิร์ฟเวอร์

  • POST – เพื่อสร้างทรัพยากรบนเซิร์ฟเวอร์
  • GET – ใช้สำหรับดึงข้อมูลจากเซิร์ฟเวอร์
  • PUT – คำสั่งที่ใช้เปลี่ยนสถานะหรืออัปเดตสถานะของทรัพยากร
  • ลบ – คำสั่งนี้ใช้สำหรับลบหรือกำจัดทรัพยากรออกจากเซิร์ฟเวอร์

REST กับ SOAP: ความแตกต่างที่สำคัญ

นักพัฒนาซอฟต์แวร์มักเปรียบเทียบ REST กับ SOAP เมื่อออกแบบเว็บเซอร์วิส ทั้งสองแบบช่วยให้แอปพลิเคชันแบบกระจายสามารถสื่อสารกันได้ แต่มีความแตกต่างกันอย่างมากในด้านปรัชญา REST เป็นรูปแบบสถาปัตยกรรมที่ใช้คำกริยา HTTP ที่เรียบง่ายและรูปแบบที่มีน้ำหนักเบา เช่น JSON ในขณะที่ SOAP เป็นอีกทางเลือกหนึ่ง สบู่ เป็นโปรโตคอลที่เข้มงวดซึ่งอาศัยซองจดหมาย XML และข้อตกลงที่เป็นทางการtracตารางด้านล่างนี้สรุปความแตกต่างที่สำคัญที่สุด

แง่มุม REST สบู่
ประเภท Archiสไตล์สถาปัตยกรรม ระเบียบปฏิบัติที่เข้มงวด
รูปแบบข้อมูล JSON, XML, ข้อความธรรมดา, HTML XML เท่านั้น
การขนส่ง HTTP เท่านั้น HTTP, SMTP, TCP และอื่นๆ
สถานะ ไร้สัญชาติ ไร้รัฐหรือมีรัฐ
ประสิทธิภาพ เร็วขึ้นและเบาขึ้น มีขนาดใหญ่ขึ้นเนื่องจากค่าใช้จ่ายเพิ่มเติมของ XML
เหมาะสำหรับ เว็บ, มือถือ และ API สาธารณะ แอปพลิเคชันระดับองค์กรที่ต้องการระบบรักษาความปลอดภัยที่เข้มงวด

ในทางปฏิบัติ REST เป็นตัวเลือกเริ่มต้นสำหรับ API สาธารณะบนเว็บและมือถือ เนื่องจากมีความเร็วและใช้งานง่ายกว่า ในขณะที่ SOAP ยังคงมีประโยชน์สำหรับระบบองค์กรที่ต้องการความปลอดภัยในตัวและข้อตกลงที่เป็นทางการtracทีเอส

สร้างบริการเว็บ Restful แรกของคุณใน ASP.NET

ในบทเรียน REST API นี้ เราจะเรียนรู้วิธีการสร้างเว็บเซอร์วิสแบบ Restful ใน ASP.NET

เว็บเซอร์วิสสามารถสร้างขึ้นได้ด้วยภาษาโปรแกรมที่หลากหลาย และสามารถใช้สภาพแวดล้อมการพัฒนาแบบบูรณาการ (IDE) หลายประเภทในการสร้างเว็บเซอร์วิสแบบ REST ได้

ในตัวอย่าง RESTful API นี้ เราจะสร้างแอปพลิเคชัน REST ใน .NET โดยใช้ Visual Studio เราจะมีเว็บเซอร์วิสแบบ RESTful ที่จะทำงานกับชุดข้อมูลด้านล่าง

ชุดข้อมูลด้านล่างนี้เป็นตัวอย่าง REST API ของบริษัทแห่งหนึ่งที่เปิดเผยบทเรียนต่างๆ โดยอิงตาม Tutorialid

รหัสการสอน ชื่อบทช่วยสอน
0 อาร์เรย์
1 คิว
2 สแต็ค

ในตัวอย่างบทเรียน REST API ของเรา เราจะนำคำกริยา Restful มาใช้ดังต่อไปนี้

  1. รับการสอน – เมื่อไคลเอ็นต์เรียกใช้ Restful API นี้ พวกเขาจะได้รับชุดบทช่วยสอนทั้งหมดที่มีอยู่ในเว็บเซอร์วิส
  2. รับบทช่วยสอน/รหัสบทช่วยสอน – เมื่อไคลเอ็นต์เรียกใช้ Restful API นี้ไคลเอ็นต์จะได้รับชื่อบทเรียนโดยอิงจาก Tutorialid ที่ไคลเอ็นต์ส่งมา
  3. POST บทช่วยสอน/ชื่อบทช่วยสอน – เมื่อไคลเอ็นต์เรียกใช้ API แบบ Restful นี้ ไคลเอ็นต์จะส่งคำขอเพื่อแทรกชื่อบทเรียน จากนั้นเว็บเซอร์วิสจะเพิ่มชื่อบทเรียนที่ส่งมาลงในคอลเลกชัน
  4. ลบบทช่วยสอน/รหัสบทช่วยสอน – เมื่อไคลเอ็นต์เรียกใช้ API แบบ Restful นี้ ไคลเอ็นต์จะส่งคำขอเพื่อลบ Tutorialname โดยอ้างอิงจาก Tutorialid จากนั้นเว็บเซอร์วิสจะลบ Tutorialname ที่ส่งมาออกจากคอลเลกชัน

มาทำตามขั้นตอนด้านล่างเพื่อสร้างเว็บเซอร์วิส RESTful ตัวแรกของเรา ซึ่งจะดำเนินการตามการใช้งานข้างต้นกัน

วิธีสร้างบริการเว็บเพื่อการพักผ่อนครั้งแรกของคุณ

ขั้นตอน 1) สร้างโครงการใหม่
ขั้นตอนแรกคือการสร้างช่องว่าง Asp.Net แอปพลิเคชันเว็บ จาก Visual Studio 2013 ให้คลิกที่เมนูตัวเลือก ไฟล์ -> สร้างโปรเจ็กต์ใหม่

สร้างบริการเว็บพักผ่อน

เมื่อคุณคลิกที่ตัวเลือก "สร้างโปรเจ็กต์ใหม่" Visual Studio จะแสดงกล่องโต้ตอบอีกกล่องหนึ่งเพื่อให้คุณเลือกประเภทของโปรเจ็กต์และป้อนรายละเอียดที่จำเป็น ซึ่งจะอธิบายในขั้นตอนถัดไป

ขั้นตอน 2) ระบุชื่อโครงการและสถานที่ตั้ง

  1. ตรวจสอบให้แน่ใจว่าคุณเลือก C# เทมเพลตเว็บของแอปพลิเคชันเว็บ ASP.NET โครงการต้องเป็นประเภทนี้จึงจะสามารถสร้างโครงการเว็บเซอร์วิสได้ เมื่อเลือกตัวเลือกนี้ Visual Studio จะดำเนินการขั้นตอนที่จำเป็นเพื่อเพิ่มไฟล์ที่ต้องการสำหรับแอปพลิเคชันบนเว็บทุกประเภท
  2. ตั้งชื่อโปรเจ็กต์ของคุณ ซึ่งในกรณีของเราคือ “Webservice.REST”
  3. จากนั้น โปรดระบุตำแหน่งที่จะจัดเก็บไฟล์โครงการ

สร้างบริการเว็บพักผ่อน

เมื่อดำเนินการเสร็จสิ้น คุณจะเห็นไฟล์โปรเจ็กต์ที่สร้างขึ้นใน Solution Explorer ของ Visual Studio 2013

สร้างบริการเว็บพักผ่อน

ขั้นตอน 3) สร้างไฟล์บริการเว็บ
ขั้นตอนต่อไปคือการสร้างไฟล์เว็บเซอร์วิสที่จะใช้เก็บเว็บเซอร์วิสแบบ RESTful

  1. ขั้นแรก ให้คลิกขวาที่ไฟล์โปรเจ็กต์ดังที่แสดงด้านล่าง

สร้างบริการเว็บพักผ่อน

  1. ในขั้นตอนนี้
    1. คลิกขวาที่ไฟล์โปรเจ็กต์
    2. เลือกตัวเลือก “เพิ่ม -> รายการใหม่”

สร้างบริการเว็บพักผ่อน

ในกล่องโต้ตอบที่ปรากฏขึ้น คุณต้องดำเนินการดังต่อไปนี้

  1. เลือกตัวเลือก WCF Service (Ajax-enabled) การเลือกไฟล์ประเภทนี้จะทำให้ Visual Studio เพิ่มโค้ดพื้นฐานบางส่วนที่จะช่วยคุณสร้างเว็บเซอร์วิสแบบ RESTful WCF ย่อมาจาก... Windows การสื่อสาร FoundationWCF เป็นไลบรารีสำหรับแอปพลิเคชันบนแพลตฟอร์มต่างๆ (หรือแพลตฟอร์มเดียวกัน) เพื่อสื่อสารกันผ่านโปรโตคอลต่างๆ เช่น TCP, HTTP และ HTTPS ส่วน Ajax นั้นเป็นแบบอะซิงโครนัส Javaต้นฉบับ และ XML AJAX ช่วยให้สามารถอัปเดตหน้าเว็บได้แบบอะซิงโครนัสโดยการแลกเปลี่ยนข้อมูลจำนวนเล็กน้อยกับเซิร์ฟเวอร์เบื้องหลัง
  2. ถัดไป ให้ตั้งชื่อบริการ ซึ่งในกรณีของเราคือ TutorialService
  3. สุดท้ายให้คลิกปุ่มเพิ่มเพื่อเพิ่มบริการลงในโซลูชัน

สร้างบริการเว็บพักผ่อน

ขั้นตอน 4) ทำการกำหนดค่า
ขั้นตอนต่อไปคือการเปลี่ยนแปลงการตั้งค่าเพื่อให้โปรเจ็กต์นี้สามารถทำงานร่วมกับเว็บเซอร์วิส RESTful ได้ ซึ่งจำเป็นต้องแก้ไขไฟล์ที่ชื่อว่า เว็บ.configไฟล์นี้จะปรากฏในหน้าต่างเดียวกับไฟล์โปรเจ็กต์เว็บเซอร์วิส ไฟล์ Web.config ประกอบด้วยการตั้งค่าทั้งหมดที่ทำให้เว็บแอปพลิเคชันทำงานได้อย่างถูกต้อง การเปลี่ยนแปลงที่กำลังทำอยู่นี้จะทำให้แอปพลิเคชันสามารถส่งและรับข้อมูลได้ในฐานะเว็บเซอร์วิส RESTful อย่างแท้จริง

  1. คลิกที่ไฟล์ Web.config เพื่อเปิดดูโค้ด

สร้างบริการเว็บพักผ่อน

  1. หาเส้น .

สร้างบริการเว็บพักผ่อน

  1. เปลี่ยนบรรทัดเป็น .

สร้างบริการเว็บพักผ่อน

ขั้นตอน 5) เพิ่มโค้ดของเราเพื่อนำไปใช้งาน
ขั้นตอนต่อไปคือการเพิ่มโค้ดสำหรับการใช้งาน โค้ดทั้งหมดด้านล่างนี้จะต้องเขียนลงในไฟล์ TutorialService.svc

  1. ขั้นตอนแรกคือการเพิ่มโค้ดเพื่อแสดงข้อมูลของเรา ซึ่งจะนำไปใช้ในโปรแกรม ดังนั้นเราจะมีรายการตัวแปรสตริงที่มีค่าเป็น “อาร์เรย์” “คิว” และ “สแต็ก” ซึ่งจะแทนชื่อบทเรียนต่างๆ ที่มีให้ใช้งานผ่านบริการเว็บโฮสติ้งของเรา

สร้างบริการเว็บพักผ่อน

namespace Webservice.REST
{
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class TutorialService
{
private static List<String> lst = new List<String>
(new String[] {"Arrays","Queues","Stacks"});

ขั้นตอน 6) กำหนดโค้ดสำหรับวิธี GET ของเรา
ต่อไป เราจะกำหนดโค้ดสำหรับเมธอด GET ของเรา โค้ดนี้จะอยู่ในไฟล์ TutorialService.svc เดียวกัน และจะทำงานทุกครั้งที่เราเรียกใช้บริการจากเบราว์เซอร์ของเรา

วิธีการด้านล่างนี้จะถูกนำมาใช้เพื่อตอบสนองสถานการณ์ที่กำหนดไว้ด้านล่าง

  • หากผู้ใช้ต้องการดูรายชื่อบทเรียนทั้งหมดที่มีอยู่ จะต้องเขียนโค้ดดังต่อไปนี้เพื่อให้ได้ผลลัพธ์ดังกล่าว

สร้างบริการเว็บพักผ่อน

[WebGet(UriTemplate = "/Tutorial")]

public String GetAllTutorial()
{
    int count = lst.Count;
    String TutorialList = "";
    for (int i = 0; i < count; i++)
        TutorialList = TutorialList + lst[i] + ",";
    return TutorialList;
}

Code คำอธิบาย:-

  1. บรรทัดแรกของโค้ดมีความสำคัญที่สุด มันถูกใช้เพื่อกำหนดวิธีการเรียกใช้เมธอดนี้ผ่านทาง... URLดังนั้น หากลิงก์ไปยังบริการเว็บของเราคือ http://localhost:52645/TutorialService.svc และเราเพิ่ม '/Tutorial' ต่อท้ายเข้าไป URLเช่นเดียวกับใน http://localhost:52645/TutorialService.svc/Tutorialโค้ดด้านบนจะถูกเรียกใช้ แอตทริบิวต์ 'WebGet' เป็นพารามิเตอร์ที่ทำให้เมธอดนี้เป็นเมธอด RESTful เพื่อให้สามารถเรียกใช้ผ่านคำสั่ง GET ได้
  2. โค้ดส่วนนี้ใช้เพื่อดูรายการสตริงในตัวแปร 'lst' และส่งคืนสตริงทั้งหมดไปยังโปรแกรมที่เรียกใช้

ขั้นตอน 7) ส่งคืนเอาต์พุต
โค้ดด้านล่างนี้จะช่วยให้มั่นใจได้ว่า หากมีการเรียกใช้เมธอด GET ไปยังบริการ Tutorial โดยระบุ Tutorial id ระบบจะส่งคืนชื่อบทเรียนที่ตรงกับ Tutorial id นั้น

สร้างบริการเว็บพักผ่อน

[WebGet(UriTemplate = "/Tutorial/{Tutorialid}")]

public String GetTutorialbyID(String Tutorialid)
{
    int pid;
    Int32.TryParse(Tutorialid, out pid);
    return lst[pid];
}

Code คำอธิบาย:-

  1. บรรทัดแรกของโค้ดมีความสำคัญที่สุด มันกำหนดวิธีการเรียกใช้เมธอดนี้ผ่านทาง... URLดังนั้น หากลิงก์ไปยังบริการเว็บของเราคือ http://localhost:52645/TutorialService.svc และเราเพิ่ม '/Tutorial/{Tutorialid}' ต่อท้ายเข้าไป URLเราจะสามารถเรียกใช้บริการเว็บได้ดังนี้ http://localhost:52645/TutorialService.svc/Tutorial/1ตัวอย่างเช่น เว็บเซอร์วิสจะส่งคืนชื่อบทเรียนที่มีรหัสบทเรียนเป็น 1
  2. ส่วนของโค้ดนี้ใช้สำหรับส่งคืนชื่อบทเรียนที่มีรหัสบทเรียน (Tutorial id) ที่ส่งผ่านไปยังเมธอดเว็บ
  • โดยค่าเริ่มต้น สิ่งที่ต้องจำไว้คือ สิ่งใดก็ตามที่ถูกส่งผ่านไปยัง URL ในเบราว์เซอร์เป็นสตริง
  • แต่คุณต้องจำไว้ว่าดัชนีของรายการของเราต้องเป็นจำนวนเต็ม ดังนั้นเราจึงเพิ่มโค้ดที่จำเป็นเพื่อแปลง Tutorialid ให้เป็นจำนวนเต็มก่อน
  • จากนั้นเราจะใช้ค่าดังกล่าวเพื่อเข้าถึงตำแหน่งดัชนีในรายการของเรา และส่งค่ากลับไปยังโปรแกรมที่เรียกใช้ตามนั้น

ขั้นตอน 8) เขียนโค้ดสำหรับเมธอด POST
ขั้นตอนต่อไปคือการเขียนโค้ดสำหรับเมธอด POST ของเรา เมธอดนี้จะถูกเรียกใช้เมื่อใดก็ตามที่เราต้องการเพิ่มค่าสตริงลงในรายการบทเรียนของเราผ่านทางเมธอด POST ตัวอย่างเช่น หากคุณต้องการเพิ่มชื่อบทเรียนว่า “การทดสอบซอฟต์แวร์” คุณจะต้องใช้เมธอด POST

สร้างบริการเว็บพักผ่อน

[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "/Tutorial/{str}")]

public void AddTutorial(String str)
{
    lst.Add(str);
}

Code คำอธิบาย:-

  1. บรรทัดแรกคือแอตทริบิวต์ 'WebInvoke' ซึ่งถูกแนบไว้กับเมธอดของเรา แอตทริบิวต์นี้ทำให้สามารถเรียกใช้เมธอดผ่านการเรียก POST ได้ ส่วนแอตทริบิวต์ RequestFormat และ ResponseFormat ต้องระบุเป็น JSON เนื่องจากเมื่อส่งค่าไปยังเว็บเซอร์วิส RESTFul ค่าเหล่านั้นจะต้องอยู่ในรูปแบบนี้
  2. บรรทัดที่สองของโค้ดใช้สำหรับเพิ่มค่าสตริงที่ส่งมาผ่านการเรียกใช้ POST ลงในรายการสตริงบทเรียนที่มีอยู่ของเรา

ขั้นตอน 9) เพิ่มเมธอดเพื่อจัดการกับการดำเนินการลบ (DELETE)
สุดท้ายนี้ เราจะเพิ่มเมธอดสำหรับจัดการการลบ เมธอดนี้จะถูกเรียกใช้เมื่อใดก็ตามที่เราต้องการลบค่าสตริงที่มีอยู่จากรายการบทเรียนของเราโดยใช้เมธอด DELETE

สร้างบริการเว็บพักผ่อน

[WebInvoke(Method = "DELETE", RequestFormat = WebMessageFormat.Json,
UriTemplate = "/Tutorial/{Tutorialid}", ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped)]

public void DeleteTutorial(String Tutorialid)
{
    int pid;
    Int32.TryParse(Tutorialid, out pid);
    lst.RemoveAt(pid);
}

Code คำอธิบาย:-

  1. บรรทัดแรกคือแอตทริบิวต์ 'WebInvoke' ซึ่งถูกแนบไว้กับเมธอดของเรา แอตทริบิวต์นี้ทำให้สามารถเรียกใช้เมธอดได้ผ่านการเรียกใช้คำสั่ง DELETE แอตทริบิวต์ RequestFormat และ ResponseFormat ต้องระบุเป็น JSON เนื่องจากค่าต่างๆ ต้องอยู่ในรูปแบบนี้ โปรดสังเกตว่าพารามิเตอร์ Method ถูกตั้งค่าเป็น “DELETE” ซึ่งหมายความว่าเมื่อใดก็ตามที่เราใช้คำสั่ง DELETE เมธอดนี้จะถูกเรียกใช้
  2. รหัสบรรทัดที่สองใช้เพื่อรับ Tutorialid ที่ส่งผ่านการเรียก DELETE และลบ ID นั้นออกจากรายการของเราในภายหลัง (ที่ Int32 ฟังก์ชันในโค้ดนี้ใช้สำหรับแปลงรหัส Tutorial จากตัวแปรสตริงเป็นจำนวนเต็ม)

เรียกใช้บริการเว็บ Restful ครั้งแรกของคุณ

เมื่อเราสร้างเว็บเซอร์วิสทั้งหมดในส่วนด้านบนเสร็จแล้ว ต่อไปเรามาดูกันว่าเราจะเรียกใช้เซอร์วิส Tutorial ได้อย่างไร เพื่อให้สามารถเรียกใช้งานได้จากไคลเอ็นต์ใดก็ได้

หากต้องการใช้งานเว็บเซอร์วิส โปรดทำตามขั้นตอนด้านล่าง

ขั้นตอน 1) คลิกขวาที่ไฟล์โปรเจ็กต์ – Webservice.REST

เรียกใช้บริการเว็บ Restful

ขั้นตอน 2) เลือกตัวเลือกเมนู 'ตั้งค่าเป็นโปรเจกต์เริ่มต้น' วิธีนี้จะช่วยให้มั่นใจได้ว่าโปรเจกต์นี้จะถูกเรียกใช้งานเมื่อ Visual Studio รันโซลูชันทั้งหมด

เรียกใช้บริการเว็บ Restful

ขั้นตอน 3) ขั้นตอนต่อไปคือการรันโปรเจ็กต์ โดยชื่อเบราว์เซอร์ที่เหมาะสมจะปรากฏถัดจากปุ่มรันใน Visual Studio ขึ้นอยู่กับเบราว์เซอร์เริ่มต้นที่ติดตั้งในระบบ ในกรณีของเรา เราใช้เบราว์เซอร์... Google Chrome กำลังแสดงขึ้นมา เพียงคลิกปุ่มนี้

เรียกใช้บริการเว็บ Restful

ผลลัพธ์:-

เมื่อรันโปรเจ็กต์แล้ว คุณสามารถเข้าไปที่ส่วน TutorialService.svc/Tutorial และจะได้รับผลลัพธ์ดังต่อไปนี้

เรียกใช้บริการเว็บ Restful

จากผลลัพธ์ข้างต้น

  • คุณจะเห็นว่าเบราว์เซอร์เรียกใช้คำสั่ง 'GET' และดำเนินการเมธอด 'GetAllTutorial' ในเว็บเซอร์วิส โมดูลนี้ใช้สำหรับแสดงบทเรียนทั้งหมดที่เว็บเซอร์วิสของเราเปิดเผย

ทดสอบบริการเว็บ Restful ครั้งแรกของคุณ

ในส่วนด้านบน เราได้เห็นวิธีการใช้เบราว์เซอร์เพื่อเรียกใช้คำสั่ง 'GET' และเรียกใช้ 'GetAllTutorial' แล้ว

  1. ตอนนี้เรามาลองใช้เบราว์เซอร์เพื่อดำเนินการตามสถานการณ์การใช้งานต่อไปนี้

GET Tutorial/Tutorialid – เมื่อไคลเอ็นต์เรียกใช้ API แบบ Restful นี้ไคลเอ็นต์จะได้รับชื่อบทเรียนตาม Tutorialid ที่ไคลเอ็นต์ส่งมา

ในเบราว์เซอร์ของคุณ ให้เพิ่มสตริง /1 ต่อท้ายคำว่า Tutorial ใน URLหากคุณกดปุ่ม Enter คุณจะได้รับผลลัพธ์ดังต่อไปนี้

ทดสอบบริการเว็บพักผ่อน

ตอนนี้คุณจะเห็นผลลัพธ์ของ “Queues” ซึ่งตรงกับหมายเลข 1 ในรายการสตริงบทเรียนของเรา นั่นหมายความว่าเมธอด 'GetTutorialbyID' กำลังถูกเรียกใช้จากเว็บเซอร์วิสของเราแล้ว นอกจากนี้ยังแสดงให้เห็นว่าค่า 1 ถูกส่งผ่านเบราว์เซอร์ไปยังเว็บเซอร์วิสและเมธอดของเราได้อย่างสำเร็จ และนั่นคือเหตุผลที่เราได้รับค่า “Queues” ที่ถูกต้องในเบราว์เซอร์

  1. ต่อไป เรามาลองใช้งานเว็บเซอร์วิสของเราโดยทำตามสถานการณ์ด้านล่างนี้กัน สำหรับขั้นตอนนี้ คุณต้องติดตั้งเครื่องมือที่เรียกว่า Fiddlerซึ่งเป็นเครื่องมือที่สามารถดาวน์โหลดได้ฟรี

POST Tutorial/Tutorialname – เมื่อไคลเอ็นต์เรียกใช้ API แบบ Restful นี้ ไคลเอ็นต์จะส่งคำขอเพื่อแทรกชื่อบทเรียน เว็บเซอร์วิสจะเพิ่มชื่อบทเรียนที่ส่งมาลงในคอลเลกชัน

เรียกใช้ Fiddler ใช้เครื่องมือและทำตามขั้นตอนด้านล่าง

  1. ไปที่ส่วน "ผู้แต่งคำขอ" ส่วนนี้ใช้สำหรับสร้างคำขอที่สามารถส่งไปยังเว็บแอปพลิเคชันใดก็ได้
  2. ตรวจสอบให้แน่ใจว่าประเภทคำขอเป็น “POST” และถูกต้อง URL กำลังถูกโจมตี ซึ่งในกรณีของเราควรจะเป็น http://localhost:52645/TutorialService.svc/Tutorial.
  3. ตรวจสอบให้แน่ใจว่า Content-Type ถูกระบุเป็น application/json โปรดจำไว้ว่าเมธอด POST ในเว็บเซอร์วิสของเรายอมรับเฉพาะข้อมูลในรูปแบบ JSON เท่านั้น ดังนั้นเราจึงต้องตรวจสอบให้แน่ใจว่าได้ระบุสิ่งนี้เมื่อส่งคำขอไปยังแอปพลิเคชันของเรา
  4. สุดท้ายนี้ เราต้องป้อนข้อมูลของเราเข้าไป โปรดจำไว้ว่าเมธอด POST ของเรารับพารามิเตอร์ที่ชื่อว่า 'str' ดังนั้นในที่นี้เรากำลังระบุว่าเราต้องการเพิ่มค่าที่ชื่อว่า “Trees” ลงในชุดชื่อบทเรียนของเรา และตรวจสอบให้แน่ใจว่าได้กำหนดแท็กให้กับชื่อตัวแปร 'str' แล้ว

สุดท้ายนี้ เพียงแค่คลิกปุ่ม Execute ใน Fiddlerขั้นตอนนี้จะส่งคำขอไปยังเว็บเซอร์วิสเพื่อส่งข้อมูล "โครงสร้างข้อมูลต้นไม้" ไปยังเว็บเซอร์วิสของเรา

ทดสอบบริการเว็บพักผ่อน

ทีนี้ เมื่อเราเข้าไปดูที่บทเรียน (Tutorial) URL เพื่อแสดงข้อความทั้งหมดในรายการตัวอย่างของเรา คุณจะเห็นว่าค่าของ "Trees" ก็ปรากฏอยู่ด้วย ซึ่งแสดงว่าคำขอ POST ไปยังเว็บเซอร์วิสได้รับการดำเนินการสำเร็จ และถูกเพิ่มลงในรายการตัวอย่างของเราเรียบร้อยแล้ว

ทดสอบบริการเว็บพักผ่อน

  1. ต่อไป เราจะลองใช้งานเว็บเซอร์วิสของเราโดยทำตามสถานการณ์ด้านล่างนี้ สำหรับขั้นตอนนี้ เราจำเป็นต้องใช้ ด้วยเช่นกัน Fiddler เครื่องมือ

ลบ Tutorial/Tutorialid – เมื่อไคลเอ็นต์เรียกใช้ API แบบ Restful นี้ ไคลเอ็นต์จะส่งคำขอเพื่อลบ Tutorialname โดยอ้างอิงจาก Tutorialid จากนั้นเว็บเซอร์วิสจะลบ Tutorial name ที่ส่งมาออกจากคอลเลกชัน

เรียกใช้ Fiddler ใช้เครื่องมือและทำตามขั้นตอนด้านล่าง

  1. ไปที่ส่วน "ผู้แต่งคำขอ" ส่วนนี้ใช้สำหรับสร้างคำขอที่สามารถส่งไปยังเว็บแอปพลิเคชันใดก็ได้
  2. ตรวจสอบให้แน่ใจว่าประเภทคำขอเป็น “ลบ” และถูกต้อง URL กำลังถูกโจมตี ซึ่งในกรณีของเราควรจะเป็น http://localhost:52645/TutorialService.svc/Tutorialตรวจสอบให้แน่ใจว่าได้ส่งรหัสที่ใช้ในการลบสตริงในรายการผ่านทาง URL เป็นพารามิเตอร์ ในตัวอย่าง REST ของเรา เราส่งค่า 1 ดังนั้นค่า 2 จะถูกลบออกnd องค์ประกอบหนึ่งในคอลเลกชันของเรา ซึ่งก็คือ “คิว”

สุดท้ายนี้ เพียงแค่คลิกปุ่ม Execute ใน Fiddlerคำสั่งนี้จะส่งคำขอไปยังเว็บเซอร์วิสเพื่อลบ "คิว" ข้อมูลออกจากเว็บเซอร์วิสของเรา

ทดสอบบริการเว็บพักผ่อน

ทีนี้ เมื่อเราเข้าไปดูที่บทเรียน (Tutorial) URL เพื่อแสดงข้อความทั้งหมดในรายการตัวอย่างของเรา คุณจะสังเกตเห็นว่าค่าของ "Queues" หายไปแล้ว

นี่แสดงว่าคำขอ DELETE ที่ส่งไปยังเว็บเซอร์วิสได้รับการดำเนินการสำเร็จแล้ว องค์ประกอบที่ดัชนีหมายเลข 1 ในรายการสตริงตัวอย่างของเราถูกลบออกเรียบร้อยแล้ว

ทดสอบบริการเว็บพักผ่อน

แนวปฏิบัติที่ดีที่สุดสำหรับ RESTful API

การสร้าง REST API ที่ใช้งานได้นั้นเป็นเพียงขั้นตอนแรก การสร้าง REST API ที่สามารถรองรับการขยายขนาดและบำรุงรักษาได้อย่างยั่งยืนนั้นต้องอาศัยวินัย แนวทางปฏิบัติด้านล่างนี้จะช่วยให้เอนด์พอยต์ของคุณคาดเดาได้ ปลอดภัย และใช้งานง่ายสำหรับนักพัฒนาคนอื่นๆ และเอเจนต์ AI

  • ใช้คำนาม ไม่ใช่คำกริยา ใน URLs. จุดสิ้นสุด เช่น /พนักงาน/1 ชัดเจนกว่า /getEmployee?id=1เนื่องจากคำกริยา HTTP ได้อธิบายการกระทำนั้นไว้แล้ว
  • ส่งคืนรหัสสถานะที่มีความหมาย ส่งรหัส 200 สำหรับความสำเร็จ, 201 สำหรับการสร้างทรัพยากรสำเร็จ, 400 สำหรับคำขอที่ไม่ถูกต้อง, 401 สำหรับการเข้าถึงที่ไม่ได้รับอนุญาต, 404 สำหรับทรัพยากรที่หายไป และ 500 สำหรับข้อผิดพลาดของเซิร์ฟเวอร์
  • กำหนดเวอร์ชัน API ของคุณ การเพิ่มส่วนเวอร์ชัน เช่น /v1/ เส้นทางนี้ช่วยให้คุณพัฒนาบริการได้โดยไม่ทำให้ลูกค้าปัจจุบันได้รับผลกระทบ
  • รักษาความปลอดภัยให้กับทุกจุดเชื่อมต่อ ใช้ HTTPS ร่วมกับคีย์ API หรือโทเค็น OAuth 2.0 และตรวจสอบความถูกต้องของข้อมูลที่เข้ามาทั้งหมด
  • รองรับการแบ่งหน้าและการกรองข้อมูล การแสดงผลข้อมูลจำนวนมากในรูปแบบหลายหน้าช่วยให้การตอบสนองรวดเร็วและลดภาระของเซิร์ฟเวอร์

การปฏิบัติตามหลักการเหล่านี้จะทำให้เว็บเซอร์วิส RESTful ของคุณสามารถผสานรวมได้อย่างง่ายดาย ไม่ว่าผู้ใช้งานจะเป็นแอปพลิเคชันบนมือถือ ระบบของพันธมิตร หรือเวิร์กโฟลว์ AI อัตโนมัติก็ตาม

คำถามที่พบบ่อย

REST เป็นรูปแบบสถาปัตยกรรมที่ใช้คำสั่ง HTTP และรูปแบบข้อมูลขนาดเล็ก เช่น JSON ในขณะที่ SOAP เป็นโปรโตคอลที่เข้มงวดซึ่งใช้โครงสร้าง XML REST เร็วกว่า ง่ายกว่า และเหมาะสมกว่าสำหรับเว็บและแอปพลิเคชันบนมือถือ ส่วน SOAP เหมาะสำหรับระบบองค์กรที่ต้องการระบบรักษาความปลอดภัยในตัว

RESTful API จะส่งคืนรหัสสถานะ HTTP มาตรฐาน โดย 200 ยืนยันการร้องขอสำเร็จ 201 ระบุว่าสร้างทรัพยากรแล้ว 400 รายงานการร้องขอไม่ถูกต้อง 401 หมายถึงไม่ได้รับอนุญาต 404 ระบุว่าทรัพยากรหายไป และ 500 ส่งสัญญาณข้อผิดพลาดของเซิร์ฟเวอร์ระหว่างการประมวลผล

รักษาความปลอดภัย REST API ด้วย HTTPS สำหรับการเข้ารหัสข้อมูล การใช้คีย์ API หรือโทเค็น OAuth 2.0 สำหรับการตรวจสอบสิทธิ์ การควบคุมการเข้าถึงตามบทบาทเพื่อการอนุญาต การจำกัดอัตราเพื่อป้องกันการละเมิด และการตรวจสอบความถูกต้องของข้อมูลขาเข้าอย่างเข้มงวด การบันทึกคำขอช่วยในการตรวจสอบและการตอบสนองต่อเหตุการณ์

ผู้ให้บริการ AI เช่น OpenAI, Anthropic และ Google เปิดใช้งาน REST endpoint ที่รับข้อมูล JSON และส่งคืนข้อความที่สร้างขึ้น นักพัฒนาส่งคำขอ POST พร้อมคีย์ API และบริการจะตอบกลับด้วยผลลัพธ์จากโมเดล ทำให้สามารถใช้งานแชทบอท ตัวแทน และไปป์ไลน์การทำงานอัตโนมัติได้

ใช่แล้ว เอージェนต์ AI สมัยใหม่ใช้การเรียกใช้เครื่องมือหรือการเรียกใช้ฟังก์ชันเพื่อเรียกใช้ REST endpoint ระหว่างการสนทนา เอージェนต์จะเลือก endpoint สร้างข้อมูล JSON ส่งคำขอ และอ่านการตอบกลับเพื่อวางแผนการกระทำต่อไปโดยไม่ต้องมีการป้อนข้อมูลจากมนุษย์

เว็บเบราว์เซอร์สามารถทดสอบการเรียกใช้ GET ได้โดยตรง สำหรับคำขอ POST, PUT และ DELETE นักพัฒนาจะใช้เครื่องมือต่างๆ เช่น Fiddler or Postmanซึ่งช่วยให้คุณสามารถกำหนดส่วนหัว เลือกคำกริยา และตรวจสอบการตอบกลับได้

บริการ REST มักแลกเปลี่ยนข้อมูลในรูปแบบ JSON เนื่องจากมีขนาดเล็กและง่ายต่อการแยกวิเคราะห์ นอกจากนี้ยังสามารถใช้ XML, HTML หรือข้อความธรรมดาได้ โดยไคลเอนต์และเซิร์ฟเวอร์จะตกลงรูปแบบข้อมูลโดยใช้ส่วนหัว HTTP Content-Type และ Accept

สรุปโพสต์นี้ด้วย: