Lợi ích của dịch vụ web RESTful là gì?


8

Nhiệm vụ học tập Trước tiên, chúng tôi được yêu cầu tạo ra một tập hợp các .htmltệp tĩnh hiển thị kết quả bầu cử trong các bộ phận hành chính khác nhau. Sau đó, chúng tôi được yêu cầu "hiện đại hóa" điều này bằng cách sử dụng các mẫu Django. Đủ công bằng, tôi có thể thấy những lợi ích của phương pháp này.

Nhưng sau đó chúng tôi được yêu cầu tiếp tục "điều chỉnh" điều này bằng cách làm cho ứng dụng "RESTful". Theo như tôi có thể nói điều này có nghĩa là máy chủ chỉ có thể hiển thị API đáp ứng yêu cầu bằng cách gửi dữ liệu thô của khách hàng ở định dạng JSON; ứng dụng khách, là một trang web HTML + CSS + JS tĩnh, phải nhận JSON này và sau đó tự động xây dựng trang web ở phía trình duyệt bằng JavaScript.

Vì tôi đã buồn bã bỏ lỡ một vài bài giảng, khi điều này phải được giải thích, có ai có thể giải thích cho tôi những lợi ích của cách tiếp cận như vậy không? Bởi vì tôi phải nói rằng tôi chỉ có thể thấy nhược điểm:

  • Người dùng có JavaScript bị vô hiệu hóa sẽ không thể xem trang.
  • Chỉnh sửa cho tôi nếu tôi sai, nhưng AFAIK nội dung của một trang web như vậy sẽ khó có thể được Google lập chỉ mục.
  • Người dùng sẽ không thể đánh dấu kết quả bầu cử trong một bộ phận cụ thể. Thay vào đó, mỗi lần họ ghé thăm bên cạnh, họ sẽ phải nhấp theo cách của mình để làm cho JavaScript tải kết quả từ bộ phận cụ thể đó. Hoặc triển khai bot Selenium thực hiện điều này cho họ.
  • Nó phá vỡ các nút trình duyệt trở lại / chuyển tiếp.


Chỉ còn một điểm nữa. Google hiện kết xuất trang như một trình duyệt để lập chỉ mục nội dung. Vì vậy, nội dung động từ dịch vụ REST của bạn có thể thu thập được nếu nó đi vào trang (ít nhất là bởi Google AFAIK). . Hiểu các trang web tốt hơn
Naresh Kumar

Câu trả lời:


13

Về mặt kỹ thuật, một máy chủ web phục vụ các trang HTML RESTful. Giao diện văn bản / Html là một đại diện hoàn toàn hợp lệ hợp lệ , miễn là loại phương tiện được đặt đúng, theo giao diện thống nhất . Chỉ không lạm dụng các động từ của bạn (GET, POST, v.v.) và theo dõi HATEOAS (nghĩa là sử dụng một URL hợp lý xác định duy nhất một tài nguyên) và bam nó yên tĩnh.

Tôi nghĩ điều mà giáo sư của bạn yêu cầu là các trang web của bạn sử dụng API RESTful thường trả về json (nhưng một lần nữa có thể trả về bất kỳ loại phương tiện nào mà khách hàng sẽ chấp nhận ).

Đối với sự phản đối của bạn:

Người dùng có JavaScript bị vô hiệu hóa sẽ không thể xem trang.

Chà, họ sẽ không thể có được bất kỳ nội dung động nào. Trang vẫn có thể chứa nội dung tĩnh.

Chỉnh sửa cho tôi nếu tôi sai, nhưng AFAIK nội dung của một trang web như vậy sẽ khó có thể được Google lập chỉ mục.

Nội dung tĩnh, bao gồm các thẻ meta, vẫn có thể được thu thập thông tin mà không gặp sự cố.

Người dùng sẽ không thể đánh dấu kết quả bầu cử trong một bộ phận cụ thể. Thay vào đó, mỗi lần họ ghé thăm bên cạnh, họ sẽ phải nhấp theo cách của mình để làm cho JavaScript tải kết quả từ bộ phận cụ thể đó. Hoặc triển khai bot Selenium thực hiện điều này cho họ. Nó phá vỡ các nút trình duyệt trở lại / chuyển tiếp.

Không Nếu bạn theo dõi đúng HATEOAS, URL sẽ cung cấp tất cả thông tin trạng thái cần thiết để hiển thị trang và nếu nó nằm trong URL, thì nó có thể đánh dấu được.


Cảm ơn bạn, nhưng có một điều tôi không hiểu. Nếu URL chứa tất cả thông tin, thì tôi sẽ gửi yêu cầu đến máy chủ để nhận tất cả kết quả bầu cử cho bộ phận quản trị này và nếu tôi làm theo đặc tả nhiệm vụ, tôi sẽ nhận được JSON JSON No, theo yêu cầu, Tôi sẽ thu thập thông tin JSON này thông qua XMLHttpResponse, điều này không ảnh hưởng đến những gì được hiển thị trên thanh địa chỉ trình duyệt.! Vì vậy, đối với bất kỳ bộ phận hành chính nào tôi xem kết quả bầu cử, URL có thể đánh dấu là giống nhau và trỏ đến trang chính.
gaazkam

4
Thật. nếu javascript của bạn thực hiện các thay đổi động đối với trang, thông thường URL sẽ không cập nhật để phù hợp. Nhưng bạn có thể làm cho nó phù hợp nếu đánh dấu là quan trọng. Xem PushState và thay thếState và có thể location.hash để biết phương tiện thực hiện việc này.
John Wu

1
Và thực tế, nếu bạn đang sử dụng trạng thái đẩy một cách chính xác, Google cũng sẽ thu thập nội dung động: newmediacampaigns.com/blog/ Kẻ
Paul

2
+1 (đặc biệt khi đề cập rằng các phản hồi html có thể là RESTful), nhưng các con nhện của Google đã không thực thi JavaScript trong một thời gian?
RubberDuck

Phân tách giao diện và phụ trợ với hệ thống API giao tiếp tiêu chuẩn.
sgargel

0

Đó là một sự khác biệt tinh tế, nhưng bạn đang chuyển từ một trang web sang một ứng dụng web. Trong một trang web, máy chủ và máy khách được liên kết chặt chẽ; tùy chọn duy nhất của bạn để xem thông tin là thông qua trang web.

Bằng cách di chuyển dữ liệu vào dịch vụ web RESTful, chế độ xem (trước đây là trang web) và mô hình (dữ liệu) được tách rời hoàn toàn và các tùy chọn tương tác với dữ liệu của bạn được tăng lên.


0

API REST, giống như bất kỳ API nào, làm cho các tài nguyên có sẵn trong giao diện máy có thể đọc được mà mọi khách hàng có thể sử dụng.

Nếu bạn sử dụng API đó để xây dựng trang web của mình, bạn là một trong nhiều ứng dụng có thể sử dụng cùng một dịch vụ.

Ưu điểm của kiểu REST là: - sử dụng giao thức hiện có (ở đây là HTTP) để trao đổi dữ liệu - bạn sử dụng các loại phương tiện được xác định để trao đổi tài nguyên.

Điều này có nghĩa là các nhà phát triển khác có thể sử dụng kiến ​​thức và công cụ hiện có để sử dụng API của bạn.

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.