ใช้การออกแบบ RESTful กับทั้งเว็บไซต์หรือไม่


11

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

แต่หน้าเกี่ยวกับเรา "เกี่ยวกับ" ทรัพยากรประเภทไหน มันเป็นทรัพยากรในแง่ของคำว่าสงบหรือไม่? นอกจากนี้ถ้าฉันไปที่ URL "http://www.example.com/" ฉันจะขอทรัพยากรอะไร ทรัพยากรดัชนี?


ฉันคิดว่าต้องการคำอธิบายบางอย่าง เป้าหมายสุดท้ายของคุณคืออะไร ความต้องการในการออกแบบที่เงียบสงบคืออะไร พักผ่อนจากสมการคุณต้องการอะไรที่จะทำให้พอใจ
Jonathan Kaufman

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

คำตอบ:


6

รูปแบบทรัพยากรของเว็บไซต์ RESTful ที่พบมากที่สุดที่ฉันเห็นคือการเพิ่มมุมมองให้กับ URI:

/ resourcetype / identifier [/ view ] [/ page] [? filterparams]

เมื่อไม่มีมุมมองคุณเพียงแสดงมุมมองเริ่มต้น ในกรณีของคุณ:

  • / - คำขอให้example.comส่งคืนมุมมองเริ่มต้นสำหรับทรัพยากรระดับบนสุด - เว็บไซต์ของคุณ
  • / aboutus - มุมมอง "เกี่ยวกับเรา" ของทรัพยากรระดับบนสุด หรืออีกวิธีหนึ่งaboutusอาจเป็นตัวระบุชื่อสำหรับทรัพยากรในขอบเขตของ CMS ระดับบนสุด *
  • / ลูกค้า / 1 / ABOUTUS - คำขอนี้จะแสดงให้เห็น "เกี่ยวกับเรา" มุมมองขอบเขตลูกค้า 1

ที่ถูกกล่าวว่าบางครั้งก็เป็นการดีที่สุดที่เหลวไหลเล็กน้อยสำหรับความหมายที่ดีกว่า ตัวอย่างเช่น StackOverflow ใช้ RESTful / questions / [id]สำหรับคำถาม แต่หน้าคำถาม Ask is / คำถาม / ถามที่ไม่ RESTful มาก ( askไม่ใช่questionsทรัพยากร) แต่สมเหตุสมผลมากที่จะใช้มนุษย์ปุถุชน


* ใน CMS ที่ระดับบนสุดประเภททรัพยากรมักจะถูกลบออก แต่ไม่เสมอไปเพราะซ้ำซ้อน


10

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

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

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

TL; DR : REST เป็นเครื่องมือ ใช้เมื่อใดและที่ไหนมันมีประโยชน์ แต่ไม่ถูกผูกไว้


2
+1 มีส่วนที่เหลือมากกว่า URLS
Josh Noe

Ajax, REST และลิงก์ภายนอกไปยังไซต์ REST ของคุณอาจเป็นฝันร้าย ขอบคุณสำหรับคำตอบ.
johnny

4

แต่หน้า "เกี่ยวกับเรา" เกี่ยวกับอะไร [?] ประเภทของทรัพยากรคืออะไร?

ซับซ้อน ไม่มีอะไรผิดปกติกับทรัพยากรที่มีส่วนประกอบชิ้นส่วนหรือโครงสร้าง

ทรัพยากรไม่ใช่ "แถวฐานข้อมูลเชิงสัมพันธ์" หรืออะตอมอื่น ๆ พวกมันเป็นทรัพยากร

ฐานข้อมูลเชิงเอกสารจัดการสิ่งนี้ได้อย่างงดงามยิ่งขึ้นเนื่องจากทรัพยากรสามารถมีขนาดใหญ่และมีโครงสร้างมากขึ้น

มันเป็นทรัพยากรในแง่ของคำว่าสงบหรือไม่?

ใช่.

นอกจากนี้ถ้าฉันไปที่ URL "http://www.example.com/" ฉันจะขอทรัพยากรอะไร

เลขที่

คุณกำลังขอทรัพยากร "aboutus" เป็นไปได้ (แต่แปลก) สำหรับทรัพยากรที่จะเป็นซิงเกิล ไม่มี ID และไม่ใช่ "รายการ"

http://www.example.com/aboutus/?format=xml

ส่งคืนเอกสาร XML ที่ซับซ้อนที่มีชิ้นส่วนและชิ้นส่วนจำนวนมาก ไม่มีอะไรผิดปกติกับที่

ทรัพยากรดัชนี?

ไม่ได้มีความหมายมากในแง่ "สงบ" หน้า "ดัชนี" มีไว้สำหรับคน แอปพลิเคชันที่ใช้ RESTful API ได้รับการออกแบบมาเพื่อขอทรัพยากรเฉพาะประเภท


4
+1 ฉันอยากแซวจุดสำคัญของคำตอบของคุณ: REST เป็นกระบวนทัศน์ที่ตั้งโปรแกรมได้; มันไม่ได้มีไว้สำหรับการบริโภคของมนุษย์
Rein Henrichs

1

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


1

ทรัพยากรสำหรับ "เกี่ยวกับเรา" คือ ... เรา :) เอ่อคุณ คิดเกี่ยวกับคุณลักษณะของคุณที่คุณต้องการเผยแพร่และม้วนคำเหล่านั้นเป็นคำนามด้วยการเป็นตัวแทน

ค่าเหล่านั้นไม่จำเป็นต้องมาจากฐานข้อมูล ... มันอาจจะเป็นค่าสตริงจำนวนมากและค่าเหล่านั้นอาจมาจากการกำหนดค่าหรืออาจเป็นรหัสที่ยากในชั้นเรียน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.