มุมมองประวัติของการจัดการสถานะแอปพลิเคชันผู้ใช้
เซสชันในความหมายดั้งเดิมจะรักษาสถานะของผู้ใช้ในแอปพลิเคชันภายในเซิร์ฟเวอร์ นี่อาจเป็นหน้าปัจจุบันในโฟลว์หรือสิ่งที่เคยป้อนไว้ก่อนหน้า แต่ยังไม่ยืนยันไปยังฐานข้อมูลหลัก
เหตุผลสำหรับความต้องการนี้คือการขาดมาตรฐานทางฝั่งไคลเอ็นต์ในการรักษาสถานะอย่างมีประสิทธิภาพโดยไม่ต้องสร้างแอปพลิเคชันหรือปลั๊กอินเฉพาะเบราว์เซอร์
คำขอส่วนหัวของ HTML5 และ XML นั้นมีความคิดมาตรฐานในการจัดเก็บข้อมูลที่ซับซ้อนรวมถึงสถานะของแอปพลิเคชันในแบบมาตรฐานบนฝั่งไคลเอ็นต์ (เช่นเบราว์เซอร์) โดยไม่ต้องหันกลับไปกลับมาระหว่างเซิร์ฟเวอร์
การใช้งานทั่วไปของบริการ REST
โดยทั่วไปจะเรียกใช้บริการ REST เมื่อมีธุรกรรมที่ต้องดำเนินการหรือหากจำเป็นต้องดึงข้อมูล
เซอร์วิส REST นั้นถูกเรียกใช้โดยแอ็พพลิเคชันฝั่งไคลเอ็นต์ไม่ใช่ผู้ใช้ปลายทางโดยตรง
ตรวจสอบสิทธิ์
สำหรับการร้องขอใด ๆ ไปยังเซิร์ฟเวอร์ส่วนหนึ่งของการร้องขอควรมีโทเค็นการอนุญาต วิธีการที่จะนำมาใช้เป็นโปรแกรมที่เฉพาะเจาะจง แต่โดยทั่วไปเป็นอย่างใดอย่างหนึ่งBASIC
หรือCERTIFICATE
รูปแบบของการตรวจสอบ
การรับรองความถูกต้องแบบฟอร์มไม่ได้ใช้โดยบริการ REST อย่างไรก็ตามตามที่ระบุไว้ข้างต้นบริการ REST ไม่ได้หมายถึงให้เรียกโดยผู้ใช้ แต่โดยแอปพลิเคชัน แอปพลิเคชันต้องจัดการรับโทเค็นการตรวจสอบความถูกต้อง ในกรณีของฉันฉันใช้คุกกี้กับJASPIC กับ OAuth 2.0 เพื่อเชื่อมต่อกับ Google สำหรับการตรวจสอบและรับรองความถูกต้อง HTTP ง่าย ๆ สำหรับการทดสอบอัตโนมัติ ฉันยังใช้การพิสูจน์ตัวตน HTTP Header ผ่าน JASPICสำหรับการทดสอบในพื้นที่ด้วย (แม้ว่าวิธีการเดียวกันสามารถทำได้ใน SiteMinder)
ตามตัวอย่างเหล่านั้นการตรวจสอบความถูกต้องได้รับการจัดการทางฝั่งไคลเอ็นต์ (แม้ว่า SiteMinder หรือ Google จะเก็บเซสชันการตรวจสอบความถูกต้องไว้ที่ปลายสุด) ไม่มีสิ่งใดที่สามารถทำได้เกี่ยวกับสถานะนั้น แต่ไม่ได้เป็นส่วนหนึ่งของแอปพลิเคชันบริการ REST
ดึงคำขอ
คำขอสืบค้นใน REST เป็นการGET
ดำเนินการที่ร้องขอทรัพยากรเฉพาะและสามารถแคชได้ ไม่จำเป็นต้องใช้เซสชันเซิร์ฟเวอร์เพราะคำขอมีทุกสิ่งที่จะต้องดึงข้อมูล: การรับรองความถูกต้องและ URI
สคริปต์ธุรกรรม
ตามที่ระบุไว้ข้างต้นแอปพลิเคชันฝั่งไคลเอ็นต์เองจะเรียกใช้บริการ REST พร้อมกับการตรวจสอบความถูกต้องที่จัดการกับฝั่งไคลเอ็นต์เช่นกัน
สิ่งนี้หมายความว่าสำหรับบริการ REST [ถ้าทำอย่างถูกต้อง] คือการร้องขอเพียงครั้งเดียวไปยังเซิร์ฟเวอร์ REST จะมีทุกอย่างที่จำเป็นสำหรับการดำเนินการของผู้ใช้คนเดียวที่ทำทุกอย่างที่จำเป็นในธุรกรรมเดียวสคริปต์ธุรกรรมเป็นรูปแบบ ถูกเรียก.
สิ่งนี้ทำผ่านการPOST
ร้องขอโดยปกติ แต่คนอื่น ๆ เช่นPUT
สามารถใช้
จำนวนมากของตัวอย่างที่วางแผนของส่วนที่เหลือ (ตัวผมเองทำอย่างนี้) พยายามที่จะทำตามมากของสิ่งที่ได้รับการกำหนดไว้ในโปรโตคอล HTTP, หลังจากผ่านที่ฉันตัดสินใจที่จะเป็นในทางปฏิบัติมากขึ้นและทิ้งมันไปGET และ POST เท่านั้น POST
วิธีการไม่ได้มีการดำเนินการรูปแบบ POST-เปลี่ยนเส้นทางการ GET-
โดยไม่คำนึงถึงว่าฉันได้ระบุไว้ข้างต้นแอปพลิเคชันฝั่งไคลเอ็นต์จะเป็นผู้เรียกใช้บริการและจะเรียกใช้การPOST
ร้องขอพร้อมข้อมูลทั้งหมดเมื่อจำเป็นเท่านั้น (ไม่ใช่ทุกครั้ง) สิ่งนี้จะป้องกันการร้องขอไปยังเซิร์ฟเวอร์อย่างต่อเนื่อง
การลงคะแนนเลือกตั้ง
แม้ว่า REST สามารถใช้สำหรับการสำรวจได้เช่นกัน แต่ฉันจะไม่แนะนำเว้นแต่คุณจะต้องใช้เพราะความเข้ากันได้ของเบราว์เซอร์ เพื่อที่ฉันจะใช้ WebSockets ซึ่งฉันได้ออกแบบสัญญา APIด้วยเช่นกัน อีกทางเลือกหนึ่งสำหรับเบราว์เซอร์รุ่นเก่าคือ CometD