บทช่วยสอน RESTful Web Services: REST API คืออะไรพร้อมตัวอย่าง
บริการเว็บ Restful คืออะไร?
บริการเว็บพักผ่อน เป็นบริการน้ำหนักเบา บำรุงรักษาได้ และปรับขนาดได้ ซึ่งสร้างขึ้นบนสถาปัตยกรรม REST Restful Web Service เปิดเผย API จากแอปพลิเคชันของคุณในลักษณะที่ปลอดภัย สม่ำเสมอ และไม่มีสถานะต่อไคลเอนต์ที่เรียก ไคลเอนต์ที่เรียกสามารถดำเนินการที่กำหนดไว้ล่วงหน้าโดยใช้บริการ Restful โปรโตคอลพื้นฐานสำหรับ REST คือ HTTP REST ย่อมาจาก REpresentational State Transfer
องค์ประกอบสำคัญที่สงบ
บริการเว็บ REST มีการพัฒนาไปไกลมากนับตั้งแต่ก่อตั้ง ในปี พ.ศ. 2002 Web consortium ได้เปิดตัวคำจำกัดความของบริการเว็บ WSDL และ SOAP สิ่งนี้ก่อให้เกิดมาตรฐานของวิธีการใช้บริการเว็บ
ในปี 2004 สมาคมเว็บยังได้เผยแพร่คำจำกัดความของมาตรฐานเพิ่มเติมที่เรียกว่า RESTful ในช่วงสองสามปีที่ผ่านมา มาตรฐานนี้ได้รับความนิยมอย่างมาก และกำลังถูกใช้งานโดยเว็บไซต์ยอดนิยมมากมายทั่วโลก ทั้ง Facebook และ Twitter
REST เป็นวิธีการเข้าถึงทรัพยากรที่อยู่ในสภาพแวดล้อมเฉพาะ ตัวอย่างเช่น คุณอาจมีเซิร์ฟเวอร์ที่สามารถโฮสต์เอกสาร รูปภาพ หรือวิดีโอที่สำคัญได้ ทั้งหมดนี้เป็นตัวอย่างของทรัพยากร หากลูกค้าบอกว่าเว็บเบราว์เซอร์ต้องการทรัพยากรเหล่านี้ ก็จะต้องส่งคำขอไปยังเซิร์ฟเวอร์เพื่อเข้าถึงทรัพยากรเหล่านี้ ขณะนี้บริการ REST กำหนดวิธีการเข้าถึงทรัพยากรเหล่านี้
องค์ประกอบสำคัญของการใช้งาน RESTful มีดังนี้:
- แหล่งข้อมูล – องค์ประกอบหลักประการแรกคือทรัพยากรนั่นเอง สมมติว่าเว็บแอปพลิเคชันบนเซิร์ฟเวอร์มีบันทึกของพนักงานหลายคน สมมติว่า URL ของเว็บแอปพลิเคชันคือ http://demo.guru99.com- ตอนนี้เพื่อเข้าถึงทรัพยากรบันทึกพนักงานผ่านบริการ REST เราสามารถออกคำสั่งได้ http://demo.guru99.com/employee/1 – คำสั่งนี้จะแจ้งให้เว็บเซิร์ฟเวอร์ระบุรายละเอียดของพนักงานที่มีหมายเลขพนักงานคือ 1
- ขอกริยา – สิ่งเหล่านี้อธิบายสิ่งที่คุณต้องการทำกับทรัพยากร เบราว์เซอร์ออกกริยา GET เพื่อสั่งตำแหน่งปลายทางที่ต้องการรับข้อมูล อย่างไรก็ตาม ยังมีคำกริยาอื่นๆ อีกมากมาย เช่น POST, PUT และ DELETE ดังนั้นในกรณีตัวอย่าง http://demo.guru99.com/employee/1 เว็บเบราว์เซอร์กำลังออกคำสั่ง GET เนื่องจากต้องการรับรายละเอียดข้อมูลบันทึกของพนักงาน
- ขอส่วนหัว – คำแนะนำเพิ่มเติมเหล่านี้จะถูกส่งไปพร้อมกับคำขอ ซึ่งอาจระบุประเภทของการตอบสนองที่ต้องการหรือรายละเอียดการอนุญาต
- ขอร่างกาย ข้อมูลจะถูกส่งไปพร้อมกับคำขอ โดยปกติแล้วข้อมูลจะถูกส่งไปพร้อมกับคำขอเมื่อมีการส่งคำขอ POST ไปยังเว็บเซอร์วิส REST ในการเรียก POST ไคลเอนต์จะแจ้งเว็บเซอร์วิส REST ว่าต้องการเพิ่มทรัพยากรลงในเซิร์ฟเวอร์ ดังนั้น เนื้อหาของคำขอจะมีรายละเอียดของทรัพยากรที่จำเป็นต้องเพิ่มลงในเซิร์ฟเวอร์
- ร่างกายตอบสนอง – นี่คือเนื้อหาหลักของการตอบสนอง ดังนั้นในตัวอย่าง RESTful API ของเรา หากเราต้องสืบค้นเว็บเซิร์ฟเวอร์ผ่านการร้องขอ http://demo.guru99.com/employee/1 เว็บเซิร์ฟเวอร์อาจส่งคืนเอกสาร XML ที่มีรายละเอียดทั้งหมดของพนักงานในเนื้อหาการตอบกลับ
- รหัสสถานะการตอบสนอง – รหัสเหล่านี้เป็นรหัสทั่วไปที่ส่งคืนพร้อมกับการตอบกลับจากเว็บเซิร์ฟเวอร์ ตัวอย่างคือโค้ด 200 ซึ่งโดยปกติจะส่งคืนหากไม่มีข้อผิดพลาดเมื่อส่งคืนการตอบกลับไปยังไคลเอ็นต์
วิธีการพักผ่อน
แผนภาพด้านล่างแสดงคำกริยาทั้งหมดเป็นส่วนใหญ่ (POST, GET, PUT และ DELETE) และตัวอย่าง REST API ของความหมาย
สมมติว่าเรามีบริการเว็บ RESTful ถูกกำหนดไว้ที่ตำแหน่งนั้น http://demo.guru99.com/employee - เมื่อไคลเอนต์ส่งคำขอใด ๆ ไปยังบริการเว็บนี้ ลูกค้าสามารถระบุกริยา HTTP ปกติของ GET, POST, DELETE และ PUT ได้ ด้านล่างนี้คือสิ่งที่จะเกิดขึ้นหากลูกค้าส่งคำกริยาตามลำดับ
- POST – สิ่งนี้จะถูกใช้เพื่อสร้างพนักงานใหม่โดยใช้บริการเว็บ RESTful
- GET – ใช้เพื่อรับรายชื่อพนักงานทั้งหมดที่ใช้บริการเว็บ RESTful
- PUT – สิ่งนี้จะถูกใช้เพื่ออัปเดตพนักงานทุกคนที่ใช้บริการเว็บ RESTful
- ลบ – สิ่งนี้จะถูกใช้เพื่อลบพนักงานทั้งหมดที่ใช้บริการ RESTful
ลองมาดูจากมุมมองของบันทึกเดียว สมมติว่ามีบันทึกพนักงานซึ่งมีพนักงานหมายเลข 1
การกระทำต่อไปนี้จะมีความหมายตามลำดับ
- POST – สิ่งนี้จะไม่สามารถใช้ได้เนื่องจากเรากำลังดึงข้อมูลของพนักงาน 1 ที่สร้างขึ้นแล้ว
- GET – จะใช้เพื่อรับรายละเอียดของพนักงานที่มีหมายเลขพนักงานเป็น 1 โดยใช้บริการเว็บ RESTful
- PUT – จะใช้สิ่งนี้เพื่ออัปเดตรายละเอียดของพนักงานโดยมีหมายเลขพนักงานเป็น 1 โดยใช้บริการเว็บ RESTful
- ลบ – ใช้เพื่อลบรายละเอียดของพนักงานที่มีหมายเลขพนักงานเป็น 1
ทำไมต้องสงบ
Restful ส่วนใหญ่ได้รับความนิยมเนื่องจากเหตุผลดังต่อไปนี้:
1. ภาษาและสภาพแวดล้อมที่หลากหลาย – นี่คือหนึ่งในเหตุผลพื้นฐานซึ่งเหมือนกับที่เราเคยเห็นมา สบู่ เช่นกัน
- ช่วยให้แอปพลิเคชันเว็บที่สร้างขึ้นจากภาษาการเขียนโปรแกรมต่างๆ สามารถสื่อสารระหว่างกันได้
- ด้วยความช่วยเหลือของบริการ Restful เว็บแอปพลิเคชันเหล่านี้สามารถอยู่ในสภาพแวดล้อมที่แตกต่างกัน ซึ่งบางรายการอาจเปิดอยู่ Windowsและอื่น ๆ อาจเป็นบน Linux
แต่สุดท้ายแล้วไม่ว่าสภาพแวดล้อมจะเป็นเช่นไร ผลลัพธ์สุดท้ายก็ควรจะเหมือนเดิมเสมอว่าควรจะสามารถพูดคุยกันได้ บริการเว็บเพื่อการพักผ่อนมอบความยืดหยุ่นให้กับแอปพลิเคชันที่สร้างขึ้นจากภาษาโปรแกรมและแพลตฟอร์มต่างๆ เพื่อพูดคุยกัน
รูปภาพด้านล่างเป็นตัวอย่างของเว็บแอปพลิเคชันที่ต้องสื่อสารกับแอปพลิเคชันอื่น เช่น Facebook, Twitter และ Google
ตอนนี้หากแอปพลิเคชันไคลเอ็นต์ต้องทำงานร่วมกับไซต์ต่างๆ เช่น Facebook, Twitter ฯลฯ พวกเขาอาจจะต้องรู้ว่า Facebook, Google และ Twitter สร้างขึ้นด้วยภาษาอะไร และบนแพลตฟอร์มที่พวกเขาสร้างด้วย
จากข้อมูลนี้ เราสามารถเขียนโค้ดอินเทอร์เฟซสำหรับเว็บแอปพลิเคชันของเราได้ แต่นี่อาจเป็นฝันร้ายได้
Facebook, Twitter และ Google เปิดเผยฟังก์ชันการทำงานในรูปแบบของบริการเว็บ Restful ซึ่งช่วยให้แอปพลิเคชันไคลเอ็นต์ใดๆ เรียกใช้บริการเว็บเหล่านี้ผ่าน REST ได้
2. กิจกรรมอุปกรณ์ – ในปัจจุบัน ทุกอย่างต้องดำเนินการต่อไป โทรศัพท์มือถือ อุปกรณ์ต่างๆ ไม่ว่าจะเป็นอุปกรณ์พกพา โน้ตบุ๊ก หรือแม้แต่ระบบรถยนต์
ลองนึกภาพดูสิว่าต้องใช้ความพยายามขนาดไหนในการลองเขียนโค้ดแอปพลิเคชันบนอุปกรณ์เหล่านี้เพื่อสื่อสารกับแอปพลิเคชันเว็บปกติ Restful API ช่วยให้ทำงานนี้ง่ายขึ้นได้ เพราะอย่างที่กล่าวไว้ในข้อ 1 คุณไม่จำเป็นต้องรู้จริงๆ ว่าเลเยอร์พื้นฐานของอุปกรณ์คืออะไร
3. ในที่สุดก็เป็นงานของคลาวด์ – ทุกอย่างกำลังเคลื่อนไปสู่ระบบคลาวด์ แอปพลิเคชันกำลังค่อยๆ ย้ายไปยังระบบบนคลาวด์ เช่น ใน Azure or Amazon. Azure และ Amazon มี API จำนวนมากที่อิงตามสถาปัตยกรรม Restful ดังนั้น ในปัจจุบัน จำเป็นต้องพัฒนาแอปพลิเคชันให้เข้ากันได้กับระบบคลาวด์ เนื่องจากสถาปัตยกรรมบนระบบคลาวด์ทั้งหมดทำงานบนหลักการ REST จึงสมเหตุสมผลมากกว่าที่จะเขียนโปรแกรมบริการเว็บบนสถาปัตยกรรมที่อิงตามบริการ REST เพื่อให้ใช้บริการบนระบบคลาวด์ได้ดีที่สุด
สงบ Archiเทคเจอร์
แอปพลิเคชันหรือสถาปัตยกรรมที่ถือว่าเป็นแบบ RESTful หรือแบบ REST มีลักษณะดังต่อไปนี้
1. สถานะและฟังก์ชันการทำงานแบ่งออกเป็นทรัพยากรแบบกระจาย – ซึ่งหมายความว่าทรัพยากรทั้งหมดควรสามารถเข้าถึงได้ผ่านคำสั่ง HTTP ปกติของ GET, POST, PUT หรือ DELETE ดังนั้นหากใครต้องการรับไฟล์จากเซิร์ฟเวอร์ พวกเขาควรจะสามารถออกคำขอ GET และรับไฟล์ได้ หากพวกเขาต้องการวางไฟล์บนเซิร์ฟเวอร์ พวกเขาควรจะสามารถออกคำขอ POST หรือ PUT ได้ และสุดท้าย หากต้องการลบไฟล์ออกจากเซิร์ฟเวอร์ ก็สามารถส่งคำขอ DELETE ได้
2. สถาปัตยกรรมเป็นแบบไคลเอนต์/เซิร์ฟเวอร์ ไม่มีสถานะ มีเลเยอร์ และรองรับการแคช
- ไคลเอนต์-เซิร์ฟเวอร์เป็นสถาปัตยกรรมทั่วไป โดยที่เซิร์ฟเวอร์สามารถเป็นเว็บเซิร์ฟเวอร์ที่โฮสต์แอปพลิเคชัน และไคลเอนต์ก็อาจเรียบง่ายได้เหมือนกับเว็บเบราว์เซอร์
- Stateless หมายความว่าสถานะของแอปพลิเคชันไม่ได้รับการเก็บรักษาไว้ใน REST ตัวอย่างเช่น หากคุณลบทรัพยากรออกจากเซิร์ฟเวอร์โดยใช้คำสั่ง DELETE คุณไม่สามารถคาดหวังได้ว่าข้อมูลการลบจะถูกส่งผ่านไปยังคำขอถัดไป
เพื่อให้แน่ใจว่าทรัพยากรถูกลบ คุณจะต้องออกคำขอ GET คำขอ GET จะถูกนำมาใช้เพื่อรับทรัพยากรทั้งหมดบนเซิร์ฟเวอร์ก่อน หลังจากนั้นจะต้องดูว่าทรัพยากรถูกลบจริงหรือไม่
หลักการและข้อจำกัดที่เหลือ
สถาปัตยกรรม REST ขึ้นอยู่กับคุณลักษณะบางประการซึ่งอธิบายไว้ด้านล่าง บริการเว็บ RESTful ใดๆ จะต้องปฏิบัติตามคุณลักษณะด้านล่างนี้จึงจะเรียกว่า RESTful ได้ คุณลักษณะเหล่านี้เรียกอีกอย่างหนึ่งว่าหลักการออกแบบซึ่งจำเป็นต้องปฏิบัติตามเมื่อทำงานกับบริการที่ใช้ RESTful
นี่คือข้อกำหนดพื้นฐานที่สุดของสถาปัตยกรรมที่ใช้ REST ซึ่งหมายความว่าเซิร์ฟเวอร์จะต้องมีเว็บเซอร์วิส RESTful ที่จะมอบฟังก์ชันการทำงานที่จำเป็นให้กับไคลเอนต์ ไคลเอนต์จะส่งคำขอไปยังเว็บเซอร์วิสบนเซิร์ฟเวอร์ เซิร์ฟเวอร์จะปฏิเสธคำขอหรือปฏิบัติตามและให้การตอบสนองที่เหมาะสมแก่ไคลเอนต์
- ไร้สัญชาติ
แนวคิดของการไร้สัญชาติหมายความว่าขึ้นอยู่กับไคลเอนต์เพื่อให้แน่ใจว่าข้อมูลที่จำเป็นทั้งหมดจะถูกส่งให้กับเซิร์ฟเวอร์ สิ่งนี้จำเป็นเพื่อให้เซิร์ฟเวอร์สามารถประมวลผลการตอบสนองได้อย่างเหมาะสม เซิร์ฟเวอร์ไม่ควรรักษาข้อมูลประเภทใด ๆ ระหว่างคำขอจากไคลเอนต์ เป็นลำดับคำถาม-คำตอบอิสระที่เรียบง่ายมาก ลูกค้าถามคำถาม เซิร์ฟเวอร์ตอบคำถามอย่างเหมาะสม ลูกค้าจะถามคำถามอื่น เซิร์ฟเวอร์จะไม่จำสถานการณ์คำถาม-คำตอบก่อนหน้านี้ และจะต้องตอบคำถามใหม่อย่างอิสระ
- แคช
แนวคิด Cache คือการช่วยเหลือปัญหาคนไร้สัญชาติซึ่งได้อธิบายไว้ในประเด็นสุดท้ายแล้ว เนื่องจากคำขอไคลเอ็นต์เซิร์ฟเวอร์แต่ละรายการมีความเป็นอิสระในธรรมชาติ บางครั้งไคลเอ็นต์อาจขอเซิร์ฟเวอร์สำหรับคำขอเดียวกันอีกครั้ง แม้ว่าจะมีการร้องขอไปแล้วในอดีตก็ตาม คำขอนี้จะไปที่เซิร์ฟเวอร์ และเซิร์ฟเวอร์จะให้การตอบกลับ สิ่งนี้จะเพิ่มการรับส่งข้อมูลผ่านเครือข่าย แคชเป็นแนวคิดที่นำมาใช้บนไคลเอนต์เพื่อจัดเก็บคำขอที่ถูกส่งไปยังเซิร์ฟเวอร์แล้ว ดังนั้นหากไคลเอนต์ได้รับคำขอเดียวกัน แทนที่จะไปที่เซิร์ฟเวอร์ คำขอนั้นจะไปที่แคชและรับข้อมูลที่จำเป็น ซึ่งจะช่วยประหยัดปริมาณการรับส่งข้อมูลเครือข่ายจากไคลเอนต์ไปยังเซิร์ฟเวอร์
- ระบบเลเยอร์
แนวคิดของระบบแบบหลายชั้นคือสามารถแทรกเลเยอร์เพิ่มเติมใดๆ เช่น เลเยอร์มิดเดิลแวร์ระหว่างไคลเอนต์และเซิร์ฟเวอร์จริงที่โฮสต์บริการเว็บ RESTFul (เลเยอร์มิดเดิลแวร์คือที่ซึ่งตรรกะทางธุรกิจทั้งหมดถูกสร้างขึ้น นี่อาจเป็นบริการพิเศษ สร้างขึ้นซึ่งลูกค้าสามารถโต้ตอบด้วยก่อนที่จะทำการเรียกไปยังบริการเว็บ) แต่การแนะนำเลเยอร์นี้จะต้องโปร่งใสเพื่อไม่ให้รบกวนการโต้ตอบระหว่างไคลเอนต์และเซิร์ฟเวอร์
- อินเทอร์เฟซ/สัญญาเครื่องแบบ
นี่เป็นเทคนิคพื้นฐานของการทำงานของบริการเว็บ RESTful โดยทั่วไป RESTful ทำงานบนเว็บเลเยอร์ HTTP และใช้กริยาสำคัญด้านล่างเพื่อทำงานกับทรัพยากรบนเซิร์ฟเวอร์
- POST – เพื่อสร้างทรัพยากรบนเซิร์ฟเวอร์
- GET – เพื่อดึงทรัพยากรจากเซิร์ฟเวอร์
- PUT – เพื่อเปลี่ยนสถานะของทรัพยากรหรืออัปเดต
- ลบ – เพื่อลบหรือลบทรัพยากรออกจากเซิร์ฟเวอร์
สร้างบริการเว็บ Restful แรกของคุณใน ASP.NET
ในบทช่วยสอน REST API นี้ เราจะได้เรียนรู้วิธีสร้างบริการเว็บ Restful ใน ASP.NET:
สามารถสร้างบริการบนเว็บได้หลายภาษา สภาพแวดล้อมการพัฒนาแบบรวมจำนวนมากสามารถใช้เพื่อสร้างบริการที่ใช้ REST
ในตัวอย่าง RESTful API นี้ เราจะสร้างแอปพลิเคชัน REST ใน .Net โดยใช้ Visual Studio ในตัวอย่างของเรา สำหรับบริการเว็บ Restful เราจะเลียนแบบตัวอย่างบริการ REST ต่อไปนี้
เรากำลังจะมีบริการเว็บ Restful ซึ่งจะทำงานกับชุดข้อมูลด้านล่าง
ชุดข้อมูลด้านล่างนี้แสดงถึงตัวอย่าง REST API ของการมีบริษัทที่เปิดเผยบทช่วยสอนที่ตนมีโดยอิงตาม Tutorialid
รหัสการสอน | ชื่อบทช่วยสอน |
---|---|
0 | อาร์เรย์ |
1 | คิว |
2 | สแต็ค |
ในตัวอย่างบทช่วยสอน REST API ของเรา เราจะใช้ Restful Verbs ด้านล่างนี้
- รับการสอน – เมื่อไคลเอนต์เรียกใช้ Restful API นี้ พวกเขาจะได้รับชุดบทช่วยสอนทั้งหมดจากบริการเว็บ
- รับบทช่วยสอน/รหัสบทช่วยสอน – เมื่อไคลเอนต์เรียกใช้ Restful API นี้ พวกเขาจะได้รับชื่อการฝึกสอนตาม Tutorialid ที่ไคลเอนต์ส่งมา
- POST บทช่วยสอน/ชื่อบทช่วยสอน – เมื่อไคลเอนต์เรียกใช้ Restful API นี้ ไคลเอนต์จะส่งคำขอเพื่อแทรกชื่อการสอน บริการเว็บจะเพิ่มชื่อบทช่วยสอนที่ส่งไปยังคอลเลกชัน
- ลบบทช่วยสอน/รหัสบทช่วยสอน– เมื่อไคลเอนต์เรียกใช้ Restful API นี้ ไคลเอนต์จะส่งคำขอเพื่อลบชื่อบทช่วยสอนตาม Tutorialid บริการเว็บจะลบชื่อบทช่วยสอนที่ส่งมาจากคอลเลกชัน
มาทำตามขั้นตอนด้านล่างในบทช่วยสอน RESTful API นี้เพื่อสร้างบริการเว็บ RESTful แรกของเรา ซึ่งดำเนินการตามข้างต้น
วิธีสร้างบริการเว็บเพื่อการพักผ่อนครั้งแรกของคุณ
ขั้นตอน 1) สร้างโครงการใหม่
ขั้นตอนแรกคือการสร้างช่องว่าง Asp.Net แอปพลิเคชันเว็บ จาก Visual Studio 2013 คลิกที่ตัวเลือกเมนู File->New project
เมื่อคุณคลิกที่ตัวเลือก New Project แล้ว Visual Studio จะแสดงกล่องโต้ตอบอีกอันให้คุณเลือกประเภทของโครงการและให้รายละเอียดที่จำเป็นของโครงการ ซึ่งจะมีการอธิบายในขั้นตอนต่อไปของบทช่วยสอน RESTful API นี้
ขั้นตอน 2) กรอกชื่อโครงการและที่ตั้ง
- ตรวจสอบให้แน่ใจว่าได้เลือกบริการเว็บ RESTful ก่อน C# เทมเพลตเว็บของแอปพลิเคชันบนเว็บ ASP.NET โปรเจ็กต์จะต้องเป็นประเภทนี้จึงจะสร้างโปรเจ็กต์บริการเว็บได้ เมื่อเลือกตัวเลือกนี้ Visual Studio จะดำเนินการตามขั้นตอนที่จำเป็นในการเพิ่มไฟล์ที่จำเป็นสำหรับแอปพลิเคชันบนเว็บ
- ตั้งชื่อโครงการของคุณซึ่งในกรณีของเราคือ "Webservice.REST"
- จากนั้นตรวจสอบให้แน่ใจว่าได้ระบุตำแหน่งที่จะจัดเก็บไฟล์โครงการ
เมื่อเสร็จแล้ว คุณจะเห็นไฟล์โปรเจ็กต์ที่สร้างขึ้นในตัวสำรวจโซลูชันใน Visual Studio 2013
ขั้นตอน 3) สร้างไฟล์บริการเว็บ
ขั้นตอนต่อไปคือการสร้างไฟล์บริการเว็บที่จะมีบริการเว็บ RESTful
- ขั้นแรกให้คลิกขวาที่ไฟล์โครงการดังที่แสดงด้านล่าง
- ในขั้นตอนนี้
- คลิกขวาที่ไฟล์โครงการ
- เลือกตัวเลือก “เพิ่ม -> รายการใหม่”
ในกล่องโต้ตอบที่ปรากฏขึ้น คุณต้องดำเนินการดังต่อไปนี้
- เลือกตัวเลือกบริการ WCF (เปิดใช้งาน Ajax) – เลือกไฟล์ประเภทนี้ ซึ่งจะทำให้ Visual studio เพื่อเพิ่มโค้ดพื้นฐานซึ่งจะช่วยสร้างบริการเว็บ RESTful WCF ย่อมาจาก Windows การสื่อสาร Foundation. WCF เป็นไลบรารีสำหรับแอปพลิเคชันของแพลตฟอร์มต่างๆ หรือแพลตฟอร์มเดียวกัน เพื่อสื่อสารผ่านโปรโตคอลต่างๆ เช่น TCP, HTTP, HTTPS โดยพื้นฐานแล้ว Ajax จะเป็นแบบอะซิงโครนัส Javaต้นฉบับ และ XML AJAX ช่วยให้สามารถอัปเดตหน้าเว็บได้แบบอะซิงโครนัสโดยการแลกเปลี่ยนข้อมูลจำนวนเล็กน้อยกับเซิร์ฟเวอร์เบื้องหลัง
- ต่อไปให้ตั้งชื่อบริการซึ่งก็คือ TutorialService ในกรณีของเรา
- สุดท้ายให้คลิกปุ่มเพิ่มเพื่อเพิ่มบริการลงในโซลูชัน
ขั้นตอน 4) ทำการกำหนดค่า
ขั้นตอนต่อไปคือการเปลี่ยนแปลงการกำหนดค่าเพื่อให้โปรเจ็กต์นี้สามารถทำงานกับบริการเว็บ RESTful ได้อย่างสมบูรณ์ สิ่งนี้จำเป็นต้องทำการเปลี่ยนแปลงไฟล์ที่เรียกว่า เว็บ.config- ไฟล์นี้ปรากฏในหน้าต่างเดียวกับไฟล์โครงการ Webservice ไฟล์ Web.config มีการกำหนดค่าทั้งหมดที่ทำให้แอปพลิเคชันเว็บทำงานได้อย่างที่ควรจะเป็น การเปลี่ยนแปลงที่เกิดขึ้นจริงทำให้แอปพลิเคชันสามารถส่งและรับข้อมูลเป็นบริการเว็บ RESTful ล้วนๆ
- คลิกที่ไฟล์ Web.config เพื่อเปิดโค้ด
- ค้นหาบรรทัด
- เปลี่ยนแนวเป็น
ขั้นตอน 5) เพิ่มโค้ดของเราเพื่อนำไปใช้งาน
ขั้นตอนถัดไปในบทช่วยสอน RESTful API นี้คือการเพิ่มโค้ดของเราเพื่อการนำไปใช้งาน โค้ดที่กล่าวถึงด้านล่างทั้งหมดจะต้องเขียนลงในไฟล์ TutorialService.svc
- บิตแรกคือการเพิ่มโค้ดเพื่อแสดงข้อมูลที่จะใช้ในโปรแกรมของเรา ดังนั้นเราจะมีรายการตัวแปรสตริงที่มีค่า "Arrays", "Quues" และ "Stacks" นี่จะแสดงชื่อบทช่วยสอนที่มีให้ผ่านบริการเว็บโฮสติ้งของเรา
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 = 1st.Count; String TutorialList = ""; for (int i = 0; i < count; i++) TutorialList = TutorialList + lst[i] + ","; return TutorialList; }
คำอธิบายรหัส:-
- บรรทัดแรกของโค้ดเป็นสิ่งสำคัญที่สุด มันถูกใช้เพื่อกำหนดวิธีที่เราสามารถเรียกวิธีนี้ผ่านทาง URL ดังนั้นหากลิงค์ไปยังบริการเว็บของเรานั้น http://localhost:52645/TutorialService.svc และหากเราเติม '/Tutorial' ต่อท้าย URL เป็น http://localhost:52645/TutorialService.svc/Tutorial โค้ดด้านบนจะถูกเรียกใช้ คุณลักษณะของ 'WebGet' คือพารามิเตอร์ที่อนุญาตให้เมธอดนี้เป็นเมธอด RESTful เพื่อให้สามารถเรียกใช้ผ่านกริยา GET ได้
- โค้ดส่วนนี้ใช้เพื่อดูรายการสตริงในตัวแปร 'lst' และส่งคืนสตริงทั้งหมดไปยังโปรแกรมที่เรียกใช้
ขั้นตอน 7) ส่งคืนเอาต์พุต
โค้ดด้านล่างช่วยให้แน่ใจว่าหากมีการเรียก GET ไปยังบริการการสอนด้วยรหัสการสอน ก็จะส่งคืนชื่อการสอนที่สอดคล้องกันตามรหัสการสอน
[WebGet (UriTemplate = "/Tutorial/{Tutorialid}")] public String GetTutorialbyID(String Tutorialid) { int pid; Int32.TryParse(Tutorialid, out pid); return lst[pid]; }
คำอธิบายรหัส:-
- บรรทัดแรกของโค้ดเป็นสิ่งสำคัญที่สุด มันถูกใช้เพื่อกำหนดวิธีที่เราสามารถเรียกวิธีนี้ผ่านทาง URL ดังนั้นหากลิงค์ไปยังบริการเว็บของเรานั้น http://localhost:52645/TutorialService.svc และถ้าเราเพิ่ม '/Tutorial/{Tutorialid}' ต่อท้าย URL เราก็จะสามารถเรียกใช้บริการเว็บได้เป็น http://localhost:52645/TutorialService.svc/Tutorial/1 ตัวอย่างเช่น. บริการเว็บจะต้องส่งคืนชื่อบทช่วยสอนซึ่งมี ID บทช่วยสอน#1
- โค้ดส่วนนี้ใช้เพื่อส่งคืน "ชื่อบทช่วยสอน" ซึ่งมีรหัสบทช่วยสอนส่งผ่านไปยังวิธีการของเว็บ
- ตามค่าเริ่มต้น สิ่งที่ต้องจำไว้คือสิ่งที่ส่งไปยัง URL ในเบราว์เซอร์นั้นเป็นสตริง
- แต่คุณต้องจำไว้ว่าดัชนีในรายการของเราต้องเป็นจำนวนเต็ม ดังนั้นเราจึงเพิ่มโค้ดที่จำเป็นเพื่อแปลง Tutorialid เป็นจำนวนเต็มก่อน จากนั้นใช้เพื่อเข้าถึงตำแหน่งดัชนีในรายการของเราและ
- แล้วคืนค่าให้กับโปรแกรมที่เรียกตามนั้น
ขั้นตอน 8) เขียนโค้ดสำหรับวิธี POST
ขั้นตอนต่อไปคือการเขียนโค้ดสำหรับวิธี POST ของเรา วิธีการนี้จะถูกเรียกใช้เมื่อใดก็ตามที่เราต้องการเพิ่มค่าสตริงลงในรายการบทช่วยสอนของเราผ่านวิธี POST ตัวอย่างเช่น หากคุณต้องการเพิ่มชื่อบทช่วยสอนเป็น "การทดสอบซอฟต์แวร์" คุณจะต้องใช้วิธีการ POST
คำอธิบายรหัส:-
- บรรทัดแรกคือแอตทริบิวต์ 'WebInrigg' ซึ่งแนบมากับวิธีการของเรา ซึ่งจะทำให้สามารถเรียกใช้เมธอดผ่านการเรียก POST ได้ ต้องระบุแอตทริบิวต์ RequestFormat และ ResponseFormat เป็น JSON เนื่องจากเมื่อโพสต์ค่าไปยังบริการเว็บ RESTFul ค่าจะต้องอยู่ในรูปแบบนี้
- โค้ดบรรทัดที่สองใช้เพื่อเพิ่มค่าสตริงที่ส่งผ่านการเรียก 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); 1st.RemoveAt(pid); }
คำอธิบายรหัส:-
- บรรทัดแรกคือแอตทริบิวต์ 'WebInrigg' ซึ่งแนบมากับวิธีการของเรา ซึ่งจะทำให้สามารถเรียกใช้เมธอดผ่านการเรียก POST ได้ ต้องระบุแอตทริบิวต์ RequestFormat และ ResponseFormat เป็น JSON เนื่องจากเมื่อโพสต์ค่าไปยังบริการเว็บ RESTFul ค่าจะต้องอยู่ในรูปแบบนี้ โปรดทราบว่าพารามิเตอร์ Method ถูกตั้งค่าเป็น "DELETE" ซึ่งหมายความว่าเมื่อใดก็ตามที่เราออกกริยา DELETE วิธีการนี้จะถูกเรียกใช้
- รหัสบรรทัดที่สองใช้เพื่อรับ Tutorialid ที่ส่งผ่านการเรียก DELETE และลบ ID นั้นออกจากรายการของเราในภายหลัง (ที่ Int32 ฟังก์ชันในโค้ดใช้ในการแปลง ID บทช่วยสอนจากตัวแปรสตริงเป็นจำนวนเต็ม)
เรียกใช้บริการเว็บ Restful ครั้งแรกของคุณ
ตอนนี้เราได้สร้างบริการเว็บทั้งหมดของเราในส่วนด้านบนแล้ว มาดูกันว่าเราสามารถเรียกใช้บริการการสอนเพื่อให้สามารถเรียกใช้จากไคลเอนต์ได้อย่างไร
หากต้องการเรียกใช้บริการเว็บ โปรดทำตามขั้นตอนด้านล่าง
ขั้นตอน 1) คลิกขวาที่ไฟล์โครงการ - Webservice.REST
ขั้นตอน 2) เลือกตัวเลือกเมนู 'ตั้งค่าเป็นโครงการเริ่มต้น' วิธีนี้จะช่วยให้มั่นใจว่าโครงการนี้จะถูกเรียกใช้เมื่อ Visual Studio เรียกใช้โซลูชันทั้งหมด
ขั้นตอน 3) ขั้นตอนต่อไปคือการรันโปรเจ็กต์นั้นเอง ตอนนี้ขึ้นอยู่กับเบราว์เซอร์เริ่มต้นที่ติดตั้งในระบบ ชื่อเบราว์เซอร์ที่เหมาะสมจะปรากฏถัดจากปุ่มรันใน Visual Studio ในกรณีของเรา เราได้ Google Chrome กำลังแสดงขึ้นมา เพียงคลิกปุ่มนี้
ผลลัพธ์:-
เมื่อดำเนินโครงการ คุณสามารถเรียกดูส่วน TutorialService.svc/Tutorial ของคุณได้ และคุณจะได้รับผลลัพธ์ด้านล่างนี้
ในผลลัพธ์ข้างต้น
- คุณจะเห็นว่าเบราว์เซอร์กำลังเรียกใช้กริยา 'GET' และดำเนินการวิธี 'GetAllTutorial' ในบริการเว็บ โมดูลนี้ใช้เพื่อแสดงบทช่วยสอนทั้งหมดที่เปิดเผยโดยบริการบนเว็บของเรา
ทดสอบบริการเว็บ Restful ครั้งแรกของคุณ
ในส่วนด้านบน เราได้เห็นวิธีการใช้เบราว์เซอร์เพื่อดำเนินการกริยา 'GET' และเรียกใช้ 'GetAllTutorial' แล้ว
- ตอนนี้เรามาลองใช้เบราว์เซอร์เพื่อดำเนินการตามสถานการณ์การใช้งานต่อไปนี้
รับบทช่วยสอน/รหัสบทช่วยสอน – เมื่อไคลเอนต์เรียกใช้ Restful API นี้ พวกเขาจะได้รับชื่อบทช่วยสอนตามรหัสบทช่วยสอนที่ส่งโดยไคลเอนต์
ในเบราว์เซอร์ของคุณ ให้เพิ่มสตริง /1 ต่อท้ายคำช่วยสอนใน URL หากคุณกดปุ่ม Enter คุณจะได้ผลลัพธ์ด้านล่าง
ตอนนี้คุณจะเห็นผลลัพธ์ของ Queues ซึ่งจริงๆ แล้วสอดคล้องกับหมายเลข 1 ในรายการ Tutorial Strings ของเรา ซึ่งหมายความว่าขณะนี้มีการเรียกใช้เมธอด 'GetTutorialbyID' จากบริการบนเว็บของเรา นอกจากนี้ยังแสดงให้เห็นว่าค่า 1 ถูกส่งผ่านเบราว์เซอร์ไปยังบริการเว็บของเราและวิธีการของเราได้สำเร็จ และนั่นคือสาเหตุที่เราได้รับค่า "คิว" ที่สอดคล้องกันที่ถูกต้องในเบราว์เซอร์
- ต่อไปเรามาใช้บริการเว็บของเราโดยดำเนินการตามสถานการณ์ด้านล่าง สำหรับสิ่งนี้ คุณต้องติดตั้งเครื่องมือที่เรียกว่า “Fiddler” ซึ่งเป็นเครื่องมือที่สามารถดาวน์โหลดได้ฟรีจากเว็บไซต์
POST บทช่วยสอน/ชื่อบทช่วยสอน – เมื่อไคลเอนต์เรียกใช้ Restful API นี้ ไคลเอนต์จะส่งคำขอเพื่อแทรกชื่อบทช่วยสอน บริการเว็บจะเพิ่มชื่อบทช่วยสอนที่ส่งไปยังคอลเลกชัน
เรียกใช้เครื่องมือ Filddler และทำตามขั้นตอนด้านล่าง
- ไปที่ส่วนของนักแต่งเพลง ซึ่งใช้เพื่อสร้างคำขอที่สามารถส่งไปยังเว็บแอปพลิเคชันใดก็ได้
- ตรวจสอบให้แน่ใจว่าประเภทคำขอคือ "POST" และ URL ที่ถูกต้องถูกเข้าถึง ซึ่งในกรณีของเราควรจะเป็นเช่นนั้น http://localhost:52645/TutorialService.svc/Tutorial
- ตรวจสอบให้แน่ใจว่า Content-Type ถูกทำเครื่องหมายเป็น application/json โปรดจำไว้ว่าวิธีการร้องขอ POST ของเราในบริการบนเว็บของเรายอมรับเฉพาะข้อมูลสไตล์ json เท่านั้น ดังนั้นเราจึงต้องตรวจสอบให้แน่ใจว่าได้ระบุไว้เมื่อเราส่งคำขอไปยังแอปพลิเคชันของเรา
- สุดท้ายเราจำเป็นต้องป้อนข้อมูลของเรา โปรดจำไว้ว่าวิธีการของเราสำหรับ POST ยอมรับพารามิเตอร์ที่เรียกว่า 'str' ดังนั้นที่นี่ เรากำลังระบุว่าเราต้องการเพิ่มค่าที่เรียกว่า "ต้นไม้" ให้กับคอลเลกชันชื่อบทช่วยสอนของเรา และตรวจสอบให้แน่ใจว่าค่านั้นถูกแท็กให้กับชื่อตัวแปร str
สุดท้าย เพียงคลิกปุ่ม Execute ใน Fiddler การดำเนินการนี้จะส่งคำขอไปยังเว็บเซอร์วิสเพื่อโพสต์ข้อมูล "Trees" ไปยังเว็บเซอร์วิสของเรา
ตอนนี้ เมื่อเราเรียกดู URL บทช่วยสอนเพื่อแสดงสตริงทั้งหมดในรายการบทช่วยสอนของเรา คุณจะเห็นค่าของ “Trees” ปรากฏอยู่ด้วย นี่แสดงว่าคำขอ POST ไปยังบริการเว็บได้รับการดำเนินการสำเร็จแล้ว และเพิ่มลงในรายการบทช่วยสอนของเราได้สำเร็จ
- ต่อไปเรามาใช้บริการเว็บของเราโดยดำเนินการตามสถานการณ์ด้านล่าง สำหรับสิ่งนี้ เราต้องใช้เครื่องมือ Fiddler ด้วย
ลบบทช่วยสอน/รหัสบทช่วยสอน- เมื่อไคลเอนต์เรียกใช้ Restful API นี้ ไคลเอนต์จะส่งคำขอเพื่อลบชื่อบทช่วยสอนตามรหัสบทช่วยสอน บริการเว็บจะลบชื่อบทช่วยสอนที่ส่งมาจากคอลเลกชัน
เรียกใช้เครื่องมือ Filddler และทำตามขั้นตอนด้านล่าง
- ไปที่ส่วนของนักแต่งเพลง ซึ่งใช้เพื่อสร้างคำขอที่สามารถส่งไปยังเว็บแอปพลิเคชันใดก็ได้
- ตรวจสอบให้แน่ใจว่าประเภทคำขอคือ "DELETE" และ URL ที่ถูกต้องถูกเข้าถึง ซึ่งในกรณีของเราควรจะเป็นเช่นนั้น http://localhost:52645/TutorialService.svc/Tutorial- ตรวจสอบให้แน่ใจว่ารหัสที่ใช้ในการลบสตริงในรายการส่งผ่าน URL เป็นพารามิเตอร์ ในตัวอย่าง REST ของเรา เรากำลังส่ง 1 ดังนั้นการดำเนินการนี้จะลบ 2nd องค์ประกอบในคอลเลกชันของเราซึ่งก็คือ "คิว"
สุดท้าย เพียงคลิกปุ่ม Execute ใน Fiddler การดำเนินการนี้จะส่งคำขอไปยังเว็บเซอร์วิสเพื่อลบข้อมูล "คิว" ออกจากเว็บเซอร์วิสของเรา
ตอนนี้ เมื่อเราเรียกดู URL บทช่วยสอนเพื่อแสดงสตริงทั้งหมดในรายการบทช่วยสอนของเรา คุณจะสังเกตเห็นว่าค่าของ "คิว" ไม่มีอยู่อีกต่อไป
การดำเนินการนี้แสดงว่าคำขอ DELETE ไปยังเว็บเซอร์วิสได้รับการดำเนินการสำเร็จแล้ว องค์ประกอบที่ดัชนีหมายเลข 1 ในรายการสตริงบทช่วยสอนของเราได้รับการลบสำเร็จแล้ว
สรุป
- REST ย่อมาจาก REpresentational State Transfer REST ใช้เพื่อสร้างบริการเว็บที่มีน้ำหนักเบา บำรุงรักษาได้ และปรับขนาดได้
- แอปพลิเคชันจำนวนมากขึ้นเรื่อยๆ กำลังย้ายไปยังสถาปัตยกรรม Restful เนื่องมาจากปัจจุบันมีผู้คนจำนวนมากใช้โทรศัพท์มือถือ และมีแอปพลิเคชันหลากหลายมากขึ้นที่ย้ายไปยังคลาวด์
- ลักษณะหลักของ REST คือทรัพยากรที่อยู่บนเซิร์ฟเวอร์และคำกริยาของ GET, POST, PUT และ DELETE ซึ่งสามารถใช้เพื่อทำงานกับทรัพยากรเหล่านี้
- Visual Studio และ .Net สามารถใช้สร้างเว็บเซอร์วิส Restful ได้
- เมื่อ การทดสอบ หากต้องการบริการเว็บสำหรับ POST และ PUT คุณต้องใช้เครื่องมืออีกตัวหนึ่งที่เรียกว่า Fiddler ซึ่งสามารถใช้ส่งคำขอ POST และ PUT ไปยังเซิร์ฟเวอร์ได้