เมื่อใดที่จะใช้ 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.