Một "chiều" của chủ đề này đã bị bỏ qua nhưng điều đó rất quan trọng: có những lúc "các thực tiễn tốt nhất" phải tuân theo các quy tắc mà chúng tôi đang triển khai hoặc tăng cường với các khả năng REST.
Ví dụ thực tế:
Nhiều ứng dụng web hiện nay thực hiện kiến trúc MVC (Model, View, Controller). Họ cho rằng một đường dẫn tiêu chuẩn nhất định được cung cấp, thậm chí còn nhiều hơn khi các ứng dụng web đó đi kèm với tùy chọn "Bật URL SEO".
Chỉ cần đề cập đến một ứng dụng web khá nổi tiếng: một cửa hàng thương mại điện tử OpenCart. Khi quản trị viên kích hoạt "URL SEO", họ hy vọng các URL đã nói sẽ có định dạng MVC khá chuẩn như:
http://www.domain.tld/special-offers/list-all?limit=25
Ở đâu
special-offers
là bộ điều khiển MVC sẽ xử lý URL (hiển thị trang ưu đãi đặc biệt)
list-all
là hành động hoặc tên hàm của bộ điều khiển để gọi. (*)
giới hạn = 25 là một tùy chọn, cho biết 25 mục sẽ được hiển thị trên mỗi trang.
(*) list-all
là một tên hàm hư cấu mà tôi đã sử dụng cho rõ ràng. Trong thực tế, OpenCart và hầu hết các khung MVC đều có chức năng mặc định, ngụ ý (và thường được bỏ qua trong URL) index
được gọi khi người dùng muốn thực hiện một hành động mặc định. Vì vậy, URL thế giới thực sẽ là:
http://www.domain.tld/special-offers?limit=25
Với một ứng dụng hoặc cấu trúc khung hiện tại khá chuẩn tương tự như trên, bạn sẽ thường nhận được một máy chủ web được tối ưu hóa cho nó, viết lại URL cho nó ("URL không SEO" thực sự sẽ là: http://www.domain.tld/index.php?route=special-offers/list-all&limit=25
:).
Do đó, bạn, với tư cách là nhà phát triển, phải đối mặt với việc xử lý cơ sở hạ tầng hiện có và điều chỉnh "thực tiễn tốt nhất" của bạn, trừ khi bạn là quản trị viên hệ thống, biết chính xác cách điều chỉnh cấu hình viết lại Apache / NGinx (sau này có thể khó chịu!) Và vì vậy trên.
Vì vậy, API REST của bạn thường sẽ tốt hơn nhiều theo các tiêu chuẩn của ứng dụng web giới thiệu, cả về tính nhất quán với nó và tính dễ dàng / tốc độ (và do đó tiết kiệm ngân sách).
Để quay lại ví dụ thực tế ở trên, API REST nhất quán sẽ là một cái gì đó có URL như:
http://www.domain.tld/api/special-offers-list?from=15&limit=25
hoặc (URL không SEO)
http://www.domain.tld/index.php?route=api/special-offers-list?from=15&limit=25
với sự kết hợp của các đối số "đường dẫn được hình thành" và đối số "hình thành truy vấn".