Từ Wikipedia: Bộ định vị tài nguyên thống nhất
Một đường dẫn , chứa dữ liệu, thường được tổ chức ở dạng phân cấp , xuất hiện dưới dạng một chuỗi các phân đoạn được phân tách bằng dấu gạch chéo.
Một truy vấn tùy chọn , được phân tách từ phần trước bằng dấu chấm hỏi (?), Chứa chuỗi truy vấn của dữ liệu không phân cấp .
- Theo thiết kế khái niệm của URL, chúng tôi có thể triển khai PathParam cho các thành phần dữ liệu / chỉ thị / định vị phân cấp hoặc triển khai QueryParam khi dữ liệu không được phân cấp. Điều này có ý nghĩa bởi vì các đường dẫn được sắp xếp tự nhiên, trong khi các truy vấn chứa các biến có thể được sắp xếp tùy ý (các cặp biến / giá trị không được sắp xếp).
Một bình luận trước đó đã viết,
Tôi nghĩ rằng nếu tham số xác định một thực thể cụ thể, bạn nên sử dụng biến đường dẫn.
Một người khác viết,
Sử dụng @PathParam để truy xuất dựa trên id. Người dùng @QueryParam cho bộ lọc hoặc nếu bạn có bất kỳ danh sách tùy chọn cố định nào mà người dùng có thể vượt qua.
Khác,
Tôi khuyên bạn nên đặt bất kỳ tham số bắt buộc nào trong đường dẫn và bất kỳ tham số tùy chọn nào chắc chắn phải là tham số chuỗi truy vấn.
- Tuy nhiên, người ta có thể thực hiện một hệ thống linh hoạt, không phân cấp để xác định các thực thể cụ thể! Một người có thể có nhiều chỉ mục duy nhất trên một bảng SQL và cho phép các thực thể được xác định bằng cách sử dụng bất kỳ tổ hợp trường nào có chứa một chỉ mục duy nhất! Các kết hợp khác nhau (có lẽ cũng được sắp xếp khác nhau), có thể được sử dụng cho các liên kết từ các thực thể khác nhau (người giới thiệu). Trong trường hợp này, chúng tôi có thể xử lý dữ liệu không phân cấp, được sử dụng để xác định các thực thể riêng lẻ - hoặc trong các trường hợp khác, chỉ có thể chỉ định các biến / trường nhất định - các thành phần nhất định của chỉ mục duy nhất - và truy xuất danh sách / bộ bản ghi. Trong những trường hợp như vậy, việc triển khai các URL dưới dạng QueryParams có thể dễ dàng hơn, hợp lý và hợp lý hơn!
Một chuỗi thập lục phân dài có thể làm loãng / giảm giá trị của các từ khóa trong phần còn lại của đường dẫn không? Có thể đáng để xem xét ý nghĩa SEO tiềm năng của việc đặt các biến / giá trị trong đường dẫn hoặc trong truy vấnvà ý nghĩa giao diện con người về việc chúng tôi có muốn người dùng có thể duyệt / khám phá phân cấp URL bằng cách chỉnh sửa nội dung của thanh địa chỉ hay không. Trang 404 Không tìm thấy của tôi sử dụng các biến SSI để tự động chuyển hướng các URL bị hỏng sang cha mẹ của chúng! Robot tìm kiếm cũng có thể đi qua hệ thống phân cấp đường dẫn. Mặt khác, cá nhân tôi, khi tôi chia sẻ URL trên phương tiện truyền thông xã hội, tôi đã loại bỏ thủ công bất kỳ số nhận dạng duy nhất riêng tư nào - thông thường bằng cách cắt ngắn truy vấn khỏi URL, chỉ để lại đường dẫn: trong trường hợp này, có một số tiện ích trong việc đặt số nhận dạng duy nhất trong đường dẫn chứ không phải trong truy vấn. Cho dù chúng tôi muốn tạo điều kiện cho việc sử dụng các thành phần đường dẫn như một giao diện người dùng thô, có lẽ phụ thuộc vào việc dữ liệu / thành phần có thể đọc được bằng con người hay không. Câu hỏi về khả năng đọc của con người liên quan phần nào đến câu hỏi về thứ bậc: thường, dữ liệu có thể được biểu thị dưới dạng từ khóa có thể đọc được của con người cũng được phân cấp; trong khi dữ liệu phân cấp thường có thể được biểu thị dưới dạng từ khóa có thể đọc được. (Bản thân các công cụ tìm kiếm có thể được định nghĩa là tăng cường sử dụng URL làm giao diện người dùng.) Phân cấp từ khóa hoặc chỉ thị có thể không được sắp xếp nghiêm ngặt, nhưng chúng thường đủ gần để chúng ta có thể bao quát các trường hợp thay thế trong đường dẫn vànhãn một tùy chọn là trường hợp "chính tắc" .
Về cơ bản, có một số loại câu hỏi mà chúng tôi có thể trả lời bằng URL cho mỗi yêu cầu:
- Những loại hồ sơ / điều chúng tôi đang yêu cầu / phục vụ?
- Chúng ta quan tâm đến cái nào?
- Làm thế nào để chúng tôi muốn trình bày thông tin / hồ sơ?
Q1 gần như chắc chắn được bảo vệ tốt nhất bởi đường dẫn hoặc PathParams. Q3 (có thể được điều khiển thông qua một tập hợp các tham số tùy chọn và giá trị mặc định được đặt tùy ý); gần như chắc chắn được bao phủ tốt nhất bởi QueryParams. Q2: Nó phụ thuộc vào VÒNG