ควรใช้ REST หากเป็นสิ่งสำคัญมากสำหรับคุณในการลดการเชื่อมต่อระหว่างส่วนประกอบไคลเอ็นต์และเซิร์ฟเวอร์ในแอปพลิเคชันแบบกระจาย
อาจเป็นกรณีนี้หากเซิร์ฟเวอร์ของคุณจะถูกใช้โดยไคลเอนต์ต่างๆจำนวนมากที่คุณไม่สามารถควบคุมได้ นอกจากนี้ยังอาจเป็นกรณีหากคุณต้องการอัปเดตเซิร์ฟเวอร์เป็นประจำโดยไม่จำเป็นต้องอัปเดตซอฟต์แวร์ไคลเอ็นต์
ฉันสามารถมั่นใจได้ว่าการบรรลุเป้าหมายนี้ในระดับต่ำของการมีเพศสัมพันธ์เป็นไม่ง่ายที่จะทำ สิ่งสำคัญคือต้องปฏิบัติตามข้อ จำกัด ทั้งหมดของ REST เพื่อให้ประสบความสำเร็จ การรักษาการเชื่อมต่อแบบไร้สัญชาติเป็นเรื่องยาก การเลือกประเภทสื่อที่เหมาะสมและบีบข้อมูลของคุณให้อยู่ในรูปแบบนั้นเป็นเรื่องยุ่งยาก การสร้างประเภทสื่อของคุณเองอาจทำได้ยากกว่า
การปรับพฤติกรรมของเซิร์ฟเวอร์ที่สมบูรณ์ให้เป็นอินเทอร์เฟซ HTTP ที่เหมือนกันอาจทำให้เกิดความสับสนและบางครั้งก็ดูอวดดีเมื่อเทียบกับแนวทาง RPC ที่ค่อนข้างตรงไปตรงมา
แม้จะมีปัญหา แต่ข้อดีก็คือคุณมีบริการที่นักพัฒนาไคลเอ็นต์ควรสามารถเข้าใจได้ง่ายเนื่องจากการใช้โปรโตคอล HTTP อย่างสม่ำเสมอ บริการที่ควรจะเป็นได้อย่างง่ายดายค้นพบเนื่องจากสื่อสิ่งพิมพ์และลูกค้าที่ควรจะเป็นมากมีความยืดหยุ่นต่อการเปลี่ยนแปลงบนเซิร์ฟเวอร์
ประโยชน์ของสื่อสิ่งพิมพ์และการหลีกเลี่ยงของรัฐเซสชั่นทำให้สมดุลภาระง่ายและบริการแบ่งเป็นไปได้ การปฏิบัติตามกฎ HTTP อย่างเคร่งครัดทำให้เครื่องมือต่างๆเช่นดีบักเกอร์และแคชพร็อกซีเป็นสิ่งที่ยอดเยี่ยม
ปรับปรุง
สำหรับฉันแล้วดูเหมือนว่า REST เป็น 'คำสุดท้ายของแฟชั่น' อีกคำหนึ่ง (หรือฉันคิดผิดทั้งหมดเพราะฉันไม่เคยเห็น REST ในทางปฏิบัติ)
ฉันคิดว่า REST กลายเป็นแฟชั่นเพราะคนที่พยายามทำโครงการประเภท SOA พบว่าการใช้ SOAP stack พวกเขาไม่ได้ตระหนักถึงประโยชน์ที่ได้สัญญาไว้ ผู้คนมักจะหันกลับมาที่เว็บเพื่อเป็นตัวอย่างของวิธีการรวมแบบง่ายๆ น่าเสียดายที่ฉันคิดว่าผู้คนประเมินจำนวนการวางแผนและการมองการณ์ไกลที่ไปในการสร้างเว็บต่ำเกินไปและพวกเขาก็ลดความซับซ้อนของสิ่งที่ต้องทำเพื่อให้สามารถใช้ซ้ำได้โดยบังเอิญที่เกิดขึ้นบนเว็บ
คุณบอกว่าคุณไม่เคยเห็น REST ในทางปฏิบัติ แต่นั่นอาจเป็นจริงไม่ได้ถ้าคุณเคยใช้เว็บเบราว์เซอร์ เว็บเบราว์เซอร์เป็นไคลเอนต์ REST
- เหตุใดคุณจึงไม่จำเป็นต้องทำการอัปเดตเบราว์เซอร์เมื่อมีคนเปลี่ยน html บางส่วนบนเว็บไซต์
- เหตุใดฉันจึงสามารถเพิ่มชุดหน้าใหม่ทั้งหมดลงในเว็บไซต์ได้และ "ลูกค้า" ยังคงสามารถเข้าถึงหน้าใหม่เหล่านั้นได้โดยไม่ต้องอัปเดต
- เหตุใดฉันจึงไม่จำเป็นต้องระบุ "service-description-language" ให้กับเว็บเบราว์เซอร์เพื่อบอกเมื่อไปที่http://example.org/images/catประเภทการส่งคืนจะเป็นรูปภาพ jpeg และเมื่อคุณไป ไปที่
http://example.org/description/cat
ประเภทการส่งคืนจะเป็นข้อความ / html?
- เหตุใดฉันจึงสามารถใช้เว็บเบราว์เซอร์เพื่อเยี่ยมชมไซต์ที่ไม่มีอยู่จริงเมื่อเปิดตัวเบราว์เซอร์ ลูกค้าจะรู้เกี่ยวกับไซต์เหล่านี้ได้อย่างไร?
คำถามเหล่านี้อาจฟังดูเหมือนคำถามไร้สาระ แต่ถ้าคุณรู้คำตอบคุณสามารถเริ่มดูว่า REST คืออะไร ดู StackOverflow เพื่อรับประโยชน์เพิ่มเติมของ REST เมื่อฉันดูคำถามฉันสามารถบุ๊กมาร์กหน้านั้นหรือส่ง url ให้เพื่อนและเขาก็สามารถดูข้อมูลเดียวกันได้ เขาไม่จำเป็นต้องสำรวจเว็บไซต์เพื่อค้นหาคำถามนั้น
StackOverflow ใช้บริการ OpenId ที่หลากหลายสำหรับการตรวจสอบสิทธิ์ gravatar.com สำหรับภาพอวาตาร์การวิเคราะห์ของ Google และ Quantserve สำหรับข้อมูลเชิงวิเคราะห์ การรวมหลาย บริษัท แบบนี้เป็นสิ่งที่โลก SOAP ฝันถึงเท่านั้น หนึ่งในตัวอย่างที่ดีที่สุดคือความจริงที่ว่าไลบรารี jQuery ที่ใช้ในการขับเคลื่อน StackOverflow UI นั้นถูกดึงมาจาก Content Delivery Network ของ Google ความจริงที่ว่า SO สามารถสั่งให้ไคลเอนต์ (เช่นเว็บเบราว์เซอร์ของคุณ) ดาวน์โหลดโค้ดจากไซต์ของบุคคลที่สามเพื่อปรับปรุงประสิทธิภาพเป็นข้อพิสูจน์ถึงการมีเพศสัมพันธ์ที่ต่ำระหว่างเว็บไคลเอ็นต์และเซิร์ฟเวอร์
นี่คือตัวอย่างของสถาปัตยกรรม REST ในที่ทำงาน
ขณะนี้บางเว็บไซต์ / แอปพลิเคชันทำผิดกฎของ RESTและเบราว์เซอร์ไม่ทำงานตามที่คาดไว้
- ปัญหาปุ่มย้อนกลับที่น่าอับอาย
เกิดจากการใช้สถานะเซสชันฝั่งเซิร์ฟเวอร์
- การทำโหลดบาลานซ์อาจกลายเป็นความเจ็บปวดเมื่อคุณมีสถานะเซสชันฝั่งเซิร์ฟเวอร์
- แอปพลิเคชัน Flash มักป้องกันไม่ให้ URL ระบุการเป็นตัวแทนโดยเฉพาะ
- ปัญหาอื่น ๆ ที่ทำให้เว็บเบราว์เซอร์แตกคือการปฏิบัติตามมาตรฐานประเภทสื่อไม่ดี เราได้ยินมาตลอดว่า IE6 ต้องฆ่าอย่างไร ปัญหาคือว่าไม่ปฏิบัติตามมาตรฐานอย่างถูกต้องหรือถูกละเลยไม่ว่าด้วยเหตุผลใดก็ตาม
- การใช้เซสชันการเข้าสู่ระบบเป็นที่มาของช่องโหว่ด้านความปลอดภัยมากมาย
REST มีอยู่ทั่วไป เป็นส่วนหนึ่งของเว็บที่ทำให้ใช้งานได้ดี หากคุณต้องการสร้างแอปพลิเคชันแบบกระจายที่สามารถปรับขนาดได้เช่นเดียวกับเว็บคุณต้องมีความยืดหยุ่นในการเปลี่ยนแปลงเช่นเดียวกับเว็บและส่งเสริมการใช้ซ้ำตามที่เว็บได้ทำจากนั้นปฏิบัติตามกฎเดียวกันกับที่ทำเมื่อสร้างเว็บเบราว์เซอร์