เมื่อใดที่จะใช้ REST เพื่อจัดการคำขอเทียบกับการใช้ AJAX เพื่อจัดการกับคำขอ [ปิด]


12

บนหน้าเว็บของฉันหากฉันต้องการแสดงรายการแบบเลื่อนลงแบบไดนามิก (เช่นชื่อเมืองตามประเทศที่เลือก) ฉันสามารถทำได้โดยใช้ AJAX แต่ฉันสามารถทำได้โดยใช้การเรียกใช้ REST ฉันควรใช้อันไหนดี?

ปัญหาของฉันคือฉันไม่ได้รับความแตกต่างระหว่างส่วนที่เหลือกับคำขอเบราว์เซอร์ HTTP อื่น ๆ (หรือที่เรียกว่าแบบฟอร์มส่ง) ฉันดูคำจำกัดความที่เป็นทางการของ REST และดูเหมือนว่าจะเป็นคำขอ HTTP REST แตกต่างจาก AJAX อย่างไร?


6
ในขณะที่คุณเดาว่าพวกเขาไม่ได้เป็นเอกสิทธิ์ของกันและกัน
เซทแบตทิน

2
คุณมักจะใช้ REST API เมื่อแอปพลิเคชันของคุณเข้าถึงได้โดยแอปพลิเคชันอื่น
Gian Acuna

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

2
@downvoter --- ทำไมความเกลียดชัง?
Kaushik

คำตอบ:


26

ฉันสามารถทำได้โดยใช้ AJAX แต่ฉันสามารถทำได้โดยใช้การเรียกใช้ REST

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

ปัญหาของฉันคือฉันไม่ได้รับความแตกต่างระหว่างส่วนที่เหลือและคำขอเบราว์เซอร์ HTTP (หรือที่เรียกว่าแบบฟอร์มส่ง) ฉันดูคำจำกัดความที่เป็นทางการของ REST และดูเหมือนว่าคำขอ HTTP

RESTโทรคือการร้องขอ HTTP เสมอ แม้ว่าจะสามารถใช้เพื่อจัดการการเรียกเบราว์เซอร์ปกติ (เช่นการส่งแบบฟอร์ม) และส่งคืนหน้า HTML เต็มรูปแบบ แต่โดยทั่วไปแล้วจะใช้เพื่อจัดการการโทร API ที่ส่งกลับเฉพาะข้อมูล (โดยปกติจะอยู่ในรูปแบบ JSON)

เหตุใดจึงมีชื่อแยกกัน

เนื่องจาก REST เป็นรูปแบบเฉพาะของการใช้ HTTP จึงควรใช้ในลักษณะที่มันถูกใช้มา แต่ดั้งเดิมซึ่งคนส่วนใหญ่ไม่ได้ "รับ" และแทบจะไม่ได้ใช้มาเกือบ 2 ทศวรรษ

โดยเฉพาะ REST หมายถึงการเข้ารหัสเอนทิตีที่คุณต้องการดึงหรือจัดการใน URL เอง (โดยปกติจะผ่าน ID) และเข้ารหัสการกระทำที่คุณต้องการดำเนินการกับมันในวิธี HTTP ที่ใช้ (GET สำหรับการดึง, POST สำหรับเปลี่ยน, PUT สำหรับสร้าง , DELETE สำหรับการลบ)


6
REST ไม่จำเป็นต้องอยู่บน HTTP ตลอดเวลา โพรโทคอลใด ๆ อาจเป็น REST ถ้าเหมาะกับชุดของวิธีการ แต่ในบริบทของเว็บแอปพลิเคชันมันจะเป็น HTTP แน่นอน
Jan Hudec

10
@Jan Hudec: มีตัวอย่างจริง ๆ ของ REST ที่ใช้กับโปรโตคอลอื่นหรือไม่?
Michael Borgwardt

6

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

ส่วนที่เหลือนั้นย่อมาจาก Representational State Transfer ซึ่ง Stefan Billet ชี้ให้เห็นว่าใช้คำขอ HTTP เพื่อถ่ายโอนข้อมูล ดังนั้น REST จึงเป็นวิธีหนึ่งในการทำ AJAX ด้วย SOAP จะเป็นอีกอันหนึ่ง แต่นี่เป็นคำถามสำหรับคุณ ดังนั้นคำถามของคุณควรเป็น: "เทคโนโลยีใดดีที่สุดสำหรับเคสการใช้งานของฉัน"

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


เมื่อฉันใช้ Ajax เพื่อโหลดบางส่วนของหน้าเว็บคำขอ AJAX นั้นคือการเรียก http ไปยังเซิร์ฟเวอร์ teh ... โดยเฉพาะอย่างยิ่ง ... จะเรียกวิธีการเฉพาะบน servlet ของฉัน ปลอดภัยไหมที่จะบอกว่าในกรณีนี้ AJAX ใช้ REST?
Kaushik

ขึ้นอยู่กับวิธีการโทรของคุณ หากวิธีการเช่นตอบสนองข้อ จำกัด ของ RESTful WebService ( en.wikipedia.org/wiki/Representational_state_transfer ) คุณสามารถพูดได้ว่าใช่
Lesstat

4

REST ใช้กริยา HTTP GET, POST, PUT, DELETE เพื่อรับแทรกแทรกอัพเดตลบทรัพยากรบนเซิร์ฟเวอร์ตามลำดับ เช่นรับด้วย url: ตัวควบคุม / ลูกค้า / {id}
ทางเลือกคือการเพิ่มวิธีการควบคุมเช่น GetCustomerById (id), InsertCustomer (ลูกค้า), UpdateCustomer (ลูกค้า), DeleteCustomer (ลูกค้า) นี่คือสิ่งที่เรียกว่าวิธี RPC เช่นรับด้วย url: controller / GetCustomerById? id = {id}
ข้อแตกต่างอย่างหนึ่งคือ REST api นั้นสามารถคาดเดาได้ หากคุณรู้จัก REST และคุณรู้จักชื่อของทรัพยากรที่คุณต้องการ (เช่นลูกค้า) คุณสามารถกระโดดเข้ามาและใช้คอนโทรลเลอร์ REST ด้วยกริยามาตรฐานได้ทันที
ด้วยวิธีการ RPC คุณจำเป็นต้องรู้ว่าวิธีการใดที่อยู่บนคอนโทรลเลอร์ของคุณอาร์กิวเมนต์ชนิดใดที่ใช้ ฯลฯ ลายเซ็นเหล่านี้อาจแตกต่างจากคอนโทรลเลอร์ไปยังคอนโทรลเลอร์จากแอปหนึ่งไปยังอีกแอป
AJAX ในทางกลับกันเป็นเพียงวิธีการแบบอะซิงโครนัสของการร้องขอดังกล่าวไม่ว่าจะเป็นการโทร REST หรือการโทร RPC


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