บทช่วยสอน 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 มีดังนี้:

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

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

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

สมมติว่าเรามีบริการเว็บ RESTful ถูกกำหนดไว้ที่ตำแหน่งนั้น http://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

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

ทำไมต้องสงบ

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

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

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

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

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

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

  1. แคช

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

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

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

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

  1. อินเทอร์เฟซ/สัญญาเครื่องแบบ

นี่เป็นเทคนิคพื้นฐานของการทำงานของบริการเว็บ 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 ด้านล่างนี้

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

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

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

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

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

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

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

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

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

เมื่อเสร็จแล้ว คุณจะเห็นไฟล์โปรเจ็กต์ที่สร้างขึ้นในตัวสำรวจโซลูชันใน Visual Studio 2013

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

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

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

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

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

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

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

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

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

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

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

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

  1. ค้นหาบรรทัด

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

  1. เปลี่ยนแนวเป็น

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

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

  1. บิตแรกคือการเพิ่มโค้ดเพื่อแสดงข้อมูลที่จะใช้ในโปรแกรมของเรา ดังนั้นเราจะมีรายการตัวแปรสตริงที่มีค่า "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;
}

คำอธิบายรหัส:-

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

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

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

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

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

คำอธิบายรหัส:-

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

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

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

คำอธิบายรหัส:-

  1. บรรทัดแรกคือแอตทริบิวต์ 'WebInrigg' ซึ่งแนบมากับวิธีการของเรา ซึ่งจะทำให้สามารถเรียกใช้เมธอดผ่านการเรียก 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);
	1st.RemoveAt(pid);
}

คำอธิบายรหัส:-

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

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

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

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

ขั้นตอน 1) คลิกขวาที่ไฟล์โครงการ - Webservice.REST

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

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

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

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

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

ผลลัพธ์:-

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

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

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

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

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

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

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

รับบทช่วยสอน/รหัสบทช่วยสอน – เมื่อไคลเอนต์เรียกใช้ Restful API นี้ พวกเขาจะได้รับชื่อบทช่วยสอนตามรหัสบทช่วยสอนที่ส่งโดยไคลเอนต์

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

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

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

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

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

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

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

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

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

ตอนนี้ เมื่อเราเรียกดู URL บทช่วยสอนเพื่อแสดงสตริงทั้งหมดในรายการบทช่วยสอนของเรา คุณจะเห็นค่าของ “Trees” ปรากฏอยู่ด้วย นี่แสดงว่าคำขอ POST ไปยังบริการเว็บได้รับการดำเนินการสำเร็จแล้ว และเพิ่มลงในรายการบทช่วยสอนของเราได้สำเร็จ

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

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

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

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

  1. ไปที่ส่วนของนักแต่งเพลง ซึ่งใช้เพื่อสร้างคำขอที่สามารถส่งไปยังเว็บแอปพลิเคชันใดก็ได้
  2. ตรวจสอบให้แน่ใจว่าประเภทคำขอคือ "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 ไปยังเซิร์ฟเวอร์ได้