Khi nào nên sử dụng REST để xử lý các yêu cầu so với sử dụng AJAX để xử lý các yêu cầu [đã đóng]


12

Trên trang web của tôi, nếu tôi muốn hiển thị danh sách thả xuống động (ví dụ: tên thành phố dựa trên quốc gia đã chọn), tôi có thể thực hiện bằng AJAX. Nhưng tôi cũng có thể làm điều đó bằng cách sử dụng lệnh gọi REST. Vậy nên dùng loại nào?

Vấn đề của tôi là tôi thực sự không nhận được sự khác biệt giữa REST và bất kỳ yêu cầu trình duyệt HTTP nào khác (hay còn gọi là gửi biểu mẫu). Tôi đã xem xét các định nghĩa chính thức của REST và nó có vẻ giống với yêu cầu HTTP. Vậy REST vốn đã khác với AJAX như thế nào?


6
Như bạn đoán, chúng không loại trừ lẫn nhau.
Seth Battin

2
bạn thường sử dụng API REST khi ứng dụng của bạn được truy cập bởi ứng dụng khác
Gian Acuna

Tôi không thấy sự kết hợp giữa hai. AJAX là một ứng dụng của một số techinques để triển khai nội dung web động, trong khi REST là một kiểu kiến ​​trúc.
jramoyo

2
@downvoter --- tại sao lại ghét?
Kaushik

Câu trả lời:


26

Tôi có thể làm điều đó bằng AJAX. Nhưng tôi cũng có thể làm điều đó bằng cách sử dụng lệnh gọi REST.

À, không. Hai cái đó hoàn toàn trực giao. Nếu bạn muốn cập nhật trang của mình với dữ liệu bạn phải lấy từ máy chủ, bạn sẽ thực hiện bằng AJAX. Không có cách nào khác. Và cuộc gọi AJAX đó có thể sử dụng REST hoặc một cái gì đó khác.

Vấn đề của tôi là tôi thực sự không nhận được sự khác biệt giữa REST và yêu cầu trình duyệt HTTP. (Còn gọi là gửi biểu mẫu). Tôi đã xem xét các định nghĩa chính thức về REST và nó có vẻ giống như một yêu cầu HTTP.

Một cuộc gọi REST luôn luôn một yêu cầu HTTP. Mặc dù nó có thể được sử dụng để xử lý các cuộc gọi trình duyệt thông thường (như gửi biểu mẫu) và trả lại các trang HTML đầy đủ, nhưng nó thường được sử dụng để xử lý các cuộc gọi API chỉ trả về dữ liệu (thường ở định dạng JSON).

Vậy tại sao nó có một tên riêng?

Bởi vì REST là một kiểu cụ thể của việc sử dụng HTTP, nên có thể sử dụng nó như ban đầu được sử dụng, nhưng hầu hết mọi người không "hiểu" và do đó hiếm khi được sử dụng trong gần 2 thập kỷ.

Cụ thể, REST có nghĩa là mã hóa thực thể mà bạn muốn truy xuất hoặc thao tác trong chính URL (thường thông qua ID) và mã hóa hành động bạn muốn thực hiện trên phương thức đó trong phương thức HTTP được sử dụng (GET để truy xuất, POST để thay đổi, PUT để tạo , XÓA để xóa).


6
REST không phải luôn luôn vượt qua HTTP. Bất kỳ giao thức nào cũng có thể là REST nếu nó phù hợp với tập hợp các phương thức. Nhưng trong bối cảnh ứng dụng web, nó sẽ là HTTP, tất nhiên.
Jan Hudec

10
@Jan Hudec: Có bất kỳ ví dụ thực tế nào về REST đang được sử dụng với các giao thức khác không?
Michael Borgwardt

6

Vâng, tôi nghĩ rằng trước tiên bạn cần hiểu rằng AJAX và REST không thực sự thay thế cho trường hợp sử dụng của bạn. AJAX là viết tắt của javascript và XML không đồng bộ, vì vậy nếu bạn đang sử dụng javascript để tải dữ liệu sau khi yêu cầu trình duyệt kết thúc, bạn đang thực hiện AJAX.

Mặt khác, REST là viết tắt của Chuyển giao trạng thái đại diện, như Stefan Billet đã chỉ ra sử dụng các yêu cầu HTTP để truyền dữ liệu. Vì vậy, REST thực sự là một cách để làm AJAX với. SOAP sẽ là một cái khác nhưng điều này không chính xác cho câu hỏi của bạn. Vì vậy, câu hỏi của bạn nên là: "Công nghệ nào là tốt nhất cho trường hợp sử dụng của tôi?"

Trong trường hợp này, tôi khuyên bạn nên suy nghĩ về lượng dữ liệu được sử dụng trong danh sách thả xuống của bạn. Nếu bạn chỉ có một vài yếu tố, bạn có thể có tất cả các yếu tố trong trang của mình và chỉ cần sử dụng javascript để hiển thị các yếu tố phù hợp. Tùy chọn thứ hai có thể sử dụng lệnh gọi REST với JSON làm giải thích vì nó dễ sử dụng với javascript và rất nhẹ, tất nhiên cũng có nghĩa là thực hiện AJAX.


Khi tôi sử dụng Ajax để tải một phần của trang web, yêu cầu AJAX đó là một cuộc gọi http đến máy chủ ... cụ thể hơn..tôi gọi một phương thức cụ thể trên servlet của tôi. Có an toàn không khi nói rằng trong trường hợp này AJAX đang sử dụng REST?
Kaushik

Vâng, nó phụ thuộc vào phương thức bạn đang gọi. Nếu phương thức, ví dụ đáp ứng các ràng buộc của Dịch vụ Web RESTful ( en.wikipedia.org/wiki/Repftimeatic_state_transfer ), bạn có thể nói như vậy.
Lesstat

4

REST đang sử dụng các động từ HTTP GET, POST, PUT, DELETE để lần lượt lấy, chèn, cập nhật, xóa tài nguyên trên máy chủ. Ví dụ: NHẬN với url: bộ điều khiển / khách hàng / {id}
Phương pháp thay thế là thêm các phương thức vào bộ điều khiển như GetCustomerById (id), insertCustomer (khách hàng), UpdateCustomer (khách hàng), DeleteCustomer (khách hàng). Đây là những gì được gọi là một cách tiếp cận RPC. Ví dụ: GET với url: controller / GetCustomerById? Id = {id}
Một trong những khác biệt là, api REST là loại có thể dự đoán được. Nếu bạn biết REST và bạn biết tên của tài nguyên bạn muốn (ví dụ: Khách hàng), thì bạn có thể ngay lập tức nhảy vào và sử dụng bộ điều khiển REST với các động từ tiêu chuẩn.
Với cách tiếp cận RPC, bạn cần biết phương thức nào trên bộ điều khiển của mình, loại đối số họ sử dụng, v.v. Những chữ ký này có thể thay đổi từ bộ điều khiển sang bộ điều khiển, từ ứng dụng này sang ứng dụng khác.
Mặt khác, AJAX chỉ là một cách không đồng bộ để đặt các yêu cầu đã nói ở trên, cho dù là cuộc gọi REST hay cuộc gọi RPC.


Thay thế vẫn là REST. Phần còn lại được xác định bởi tập hợp các hoạt động, KHÔNG phải giao thức được sử dụng.
Jan Hudec
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.