Khi nào sử dụng tham số truy vấn so với tham số ma trận?


90

Tham số truy vấn :http://example.com/apples?order=random&color=blue

Tham số ma trận :http://example.com/apples;order=random;color=blue

  1. Khi nào người ta nên sử dụng tham số truy vấn so với tham số ma trận?
  2. Tại sao các tham số ma trận có thể được sử dụng ở giữa URL nhưng các tham số truy vấn lại không thể? Ví dụ:http://example.com/apples;order=random;color=blue/2006/archive
  3. Nếu các tham số ma trận là một tập hợp các tham số truy vấn, tại sao không sử dụng chúng mọi lúc?

Bạn có thể đọc thêm về các tham số ma trận tại đây: http://www.w3.org/DesignIssues/MatrixURIs.html

Câu trả lời:


110

Sự khác biệt giữa tham số Ma trận và Tham số truy vấn không chỉ là quy ước.

Sự khác biệt chính là:

  • url với các tham số truy vấn sẽ không có phản hồi của chúng được lưu vào bộ nhớ cache bởi bên trung gian / proxy (hiện tại)
  • tham số ma trận có thể xuất hiện ở bất kỳ đâu trong đường dẫn
  • tính toán đi tiểu tương đối là khác nhau
  • tham số truy vấn thường bị lạm dụng để thêm động từ mới thay vì sử dụng các phương thức hiện có trên tài nguyên
  • các tham số ma trận không phải là tài nguyên, chúng là các khía cạnh giúp tham chiếu tài nguyên trong không gian thông tin khó biểu diễn trong một hệ thống phân cấp
  • Tôi đã viết nó chi tiết hơn và với nhiều tài liệu tham khảo hơn trong Tham số ma trận so với Truy vấn


    4
    "url có tham số truy vấn sẽ không có phản hồi của chúng được lưu vào bộ nhớ đệm bởi bên trung gian / proxy". Đây không phải là một điều hoàn toàn dành riêng cho việc triển khai sao? Tôi không thấy bất cứ điều gì trong các tiêu chuẩn HTTP rằng lời kêu gọi hành vi này ...
    Gili

    1
    Tóm lại: nếu những gì bạn nói là đúng tại sao bạn không di chuyển tất cả các tham số truy vấn sang tham số ma trận?
    Gili

    2
    @Gili, anh ấy chưa bao giờ nói rằng hành vi được ủy quyền bởi HTTP. từ bài viết của mình: "Người trung gian (proxy) sẽ không lưu vào bộ nhớ cache bất kỳ url nào có tham số truy vấn trong url. Điều này là do trong những ngày đầu của web, họ không tin tưởng vào thông tin kiểm soát Bộ nhớ cache từ các trang được tạo động." Thông số kỹ thuật và thực tế trong thế giới thực đôi khi (hoặc trong hầu hết các trường hợp) khác nhau.
    Hendy Irawan

    6
    Câu trả lời này sai 3/5. Sự khác biệt đối với các URI tương đối và khả năng nhúng các tham số vào giữa đường dẫn là đúng. Tất cả các điểm khác đều sai, trong đó các tham số ma trận sẽ có cùng một vấn đề chính xác khi chúng trở nên phổ biến hơn nên chúng không khác với các tham số truy vấn về mặt đó.
    Gili

    3
    Tham số truy vấn @Gill hữu ích trong việc xác định tiêu chí tùy chọn Các tham số ma trận là thông tin bổ sung cho biến đường dẫn. Xem truy vấn URL này: localhost / services / api /… matrix: localhost / services / api / movies / Actor; name? Limit = 10 Có ý nghĩa hơn khi được sử dụng dưới dạng ma trận trên truy vấn. URL này chứng minh điểm 5 từ bdargan.
    lười biếng
    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.