Áp dụng thiết kế RESTful cho toàn bộ trang web?


11

Tất cả điều này có thể bắt gặp rất mới, nhưng tôi đang cố gắng thiết kế một trang web hoàn toàn RESTful. Tôi hiểu việc áp dụng thiết kế RESTful cho những thứ như Người dùng, Ảnh, Bài đăng trên Blog, v.v. bởi vì tôi nghĩ chúng giống như "đối tượng".

Nhưng, những gì về một trang "về chúng tôi". Đó là loại tài nguyên nào? Nó thậm chí là một tài nguyên theo nghĩa RESTful của từ này? Ngoài ra, giả sử tôi truy cập URL "http://www.example.com/", tôi đang yêu cầu tài nguyên gì? Tài nguyên chỉ số?


Tôi nghĩ rằng một số làm rõ là cần thiết. Mục tiêu cuối cùng của bạn là gì. Sự cần thiết cho thiết kế yên tĩnh là gì. nghỉ ngơi khỏi phương trình, bạn cần gì để thỏa mãn?
Jonathan Kaufman

1
Mục tiêu cuối cùng là một trang web hoàn chỉnh. Cấu trúc một trang web xung quanh thiết kế yên tĩnh dường như có ý nghĩa dựa trên cách thức hoạt động của web. Tôi chỉ không chắc chắn làm thế nào để áp dụng kiểu thiết kế đó cho những thứ không giống tài nguyên, chẳng hạn như trang về hoặc trang liên hệ.
TaylorOtwell

Câu trả lời:


6

Mẫu tài nguyên trang web RESTful phổ biến nhất mà tôi thấy là thêm chế độ xem vào URI:

/ resourcetype / định danh [/ view ] [/ page] [? filterparams]

Khi không có chế độ xem , bạn chỉ cần phục vụ chế độ xem mặc định. Trong trường hợp của bạn:

  • / - yêu cầu example.comtrả về chế độ xem mặc định cho tài nguyên cấp cao nhất - trang web của bạn.
  • / aboutus - chế độ xem "Giới thiệu về chúng tôi" về tài nguyên cấp cao nhất. Hoặc, thay vào đó, aboutuscó thể là một định danh được đặt tên cho một tài nguyên trong phạm vi của CMS cấp cao nhất. *
  • / khách hàng / 1 / aboutus - yêu cầu này sẽ chỉ ra chế độ xem "Giới thiệu về chúng tôi" trong phạm vi cho khách hàng 1 .

Điều đó đang được nói, đôi khi tốt nhất là nên xì hơi một chút để có ngữ nghĩa tốt hơn. Ví dụ: StackOverflow sử dụng RESTful / câu hỏi / [id] cho các câu hỏi, nhưng trang Hỏi Câu hỏi/ câu hỏi / câu hỏi không quá RESTful ( askkhông phải là questionstài nguyên) nhưng rất có ý nghĩa khi sử dụng các công cụ đơn thuần.


* Trong CMS ở cấp cao nhất, loại tài nguyên thường, nhưng không phải lúc nào cũng bị loại bỏ vì nó là dự phòng.


10

Hãy nhớ rằng thiết kế RESTful mỗi se được dự định để cung cấp một tiêu chuẩn mà theo đó web sẽ được lập trình thống nhất. Không phải lúc nào cũng thích hợp hoặc hữu ích để cắm sừng toàn bộ trang web hướng về con người của bạn vào ngữ nghĩa REST thuần túy.

Khi bạn có tài nguyên, xem xét các đại diện của họ là hữu ích. Điều quan trọng nữa là phải xem xét các nguyên tắc thiết kế khác của REST, chẳng hạn như statlessnes và cách chúng ảnh hưởng đến hiệu suất và khả năng sử dụng của trang web của bạn. Nhưng hãy nhớ rằng REST là một công cụ, không phải là một mục tiêu. Đó là một phương tiện, không phải là kết thúc.

Sử dụng ngữ nghĩa RESTful khi hữu ích , sau khi hiểu mục đích và lợi ích của chúng và không đổ mồ hôi nếu trang web của bạn không hoàn hảo RESTful. Nó sẽ gần như không thể cho bất kỳ trang web không tầm thường trong bất kỳ sự kiện.

TL; DR : REST là một công cụ. Sử dụng nó khi nào và ở đâu hữu ích nhưng không bị ràng buộc bởi nó.


2
+1 Có nhiều thứ để nghỉ ngơi hơn URLS.
Josh Noe

Ajax, REST và liên kết bên ngoài đến trang REST của bạn có thể là một cơn ác mộng. Cảm ơn về câu trả lời của bạn.
johnny

4

Nhưng, những gì về một trang "về chúng tôi" [?] Đó là loại tài nguyên gì?

Phức tạp. Không có gì sai với một tài nguyên có các thành phần, phần hoặc cấu trúc.

Tài nguyên không phải là "hàng cơ sở dữ liệu quan hệ" hoặc những thứ nguyên tử khác. Chúng là tài nguyên.

Cơ sở dữ liệu định hướng tài liệu xử lý việc này một cách duyên dáng hơn vì một tài nguyên có thể lớn hơn và có cấu trúc hơn.

Nó thậm chí là một tài nguyên theo nghĩa RESTful của từ này?

Đúng.

Ngoài ra, giả sử tôi truy cập URL "http://www.example.com/", tôi đang yêu cầu tài nguyên gì?

Không.

Bạn đang yêu cầu tài nguyên "aboutus". Có thể (nhưng lẻ) cho một tài nguyên là một người độc thân. Không có ID và không phải là "danh sách".

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

Trả về một tài liệu XML phức tạp với nhiều phần và phần. Không có gì sai với điều đó.

Tài nguyên chỉ số?

Không có nghĩa nhiều theo nghĩa "RESTful". Trang "chỉ mục" dành cho mọi người. Một ứng dụng sử dụng API RESTful được thiết kế để yêu cầu các loại tài nguyên cụ thể.


4
+1 Tôi muốn trêu một điểm quan trọng trong câu trả lời của bạn: REST là một mô hình lập trình được; nó không nhất thiết dành cho tiêu dùng của con người
Rein Henrichs

1

Tôi sẽ giữ quan điểm của mình độc lập với back-end. Bạn có thể yêu cầu back-end cho các tài nguyên như những thứ đi trên đàn accordion, thanh điều hướng và các vật thể khác liên quan đến cơ thể. Tuy nhiên, bạn nên để việc xử lý các biểu diễn tài nguyên này cho mã máy khách của mình, mã này cuối cùng sẽ hiển thị chúng theo yêu cầu.


1

Tài nguyên cho "Giới thiệu" là ... Chúng tôi :) er, Bạn. Hãy suy nghĩ về các thuộc tính của Bạn mà bạn muốn công khai và cuộn chúng thành một danh từ có đại diện.

Các giá trị đó không phải đến từ cơ sở dữ liệu ... nó có thể sẽ là một loạt các giá trị chuỗi và chúng có thể đến từ cấu hình hoặc thậm chí có thể được mã hóa cứng trong một lớp.

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.