Kapan menggunakan parameter kueri versus parameter matriks?

90

Parameter kueri :http://example.com/apples?order=random&color=blue

Parameter matriks :http://example.com/apples;order=random;color=blue

  1. Kapan seseorang harus menggunakan parameter kueri versus parameter matriks?
  2. Mengapa parameter matriks dapat digunakan di tengah URL, tetapi parameter kueri tidak bisa? Sebagai contoh:http://example.com/apples;order=random;color=blue/2006/archive
  3. Jika parameter matriks adalah superset dari parameter kueri, mengapa tidak menggunakannya setiap saat?

Anda dapat membaca lebih lanjut tentang parameter matriks di sini: http://www.w3.org/DesignIssues/MatrixURIs.html

Gili
sumber

Jawaban:

110

Perbedaan antara parameter Matriks dan Parameter Kueri lebih dari sekadar konvensi.

Perbedaan utamanya adalah:

  • url dengan parameter kueri tidak akan memiliki responsnya di-cache oleh perantara / proxy (saat ini)
  • parameter matriks dapat muncul di mana saja di jalur
  • menghitung uri relatif berbeda
  • parameter kueri umumnya disalahgunakan untuk menambahkan kata kerja baru daripada menggunakan metode yang ada pada sumber daya
  • Parameter matriks bukanlah sumber daya, mereka adalah aspek yang membantu mereferensikan sumber daya dalam ruang informasi yang sulit untuk direpresentasikan dalam hierarki
  • Saya telah menulisnya secara lebih rinci dan dengan lebih banyak referensi di Parameter Query vs. Matrix

    bdargan
    sumber
    4
    "url dengan parameter kueri tidak akan memiliki responsnya di-cache oleh perantara / proxy". Bukankah ini murni hal khusus implementasi? Saya tidak melihat apa pun dalam standar HTTP yang menyerukan perilaku ini ...
    Gili
    1
    Singkatnya: jika yang Anda katakan benar, mengapa Anda tidak memigrasikan semua parameter kueri ke parameter matriks?
    Gili
    2
    @Gili dia tidak pernah mengatakan bahwa perilaku tersebut diamanatkan oleh HTTP. dari artikelnya: "Perantara (proxy) tidak akan menyimpan cache url apa pun dengan parameter kueri di url. Ini karena pada masa-masa awal web, mereka tidak mempercayai informasi kontrol Cache dari laman yang dibuat secara dinamis." Spesifikasi dan praktik dunia nyata terkadang (atau dalam banyak kasus) berbeda.
    Hendy Irawan
    6
    Jawaban ini salah 3/5. Perbedaan yang terkait dengan URI relatif dan kemampuan untuk menyematkan parameter di tengah jalur adalah benar. Semua poin lainnya salah, dalam hal parameter matriks akan memiliki masalah yang sama persis setelah menjadi lebih populer sehingga tidak berbeda dengan parameter kueri dalam hal itu.
    Gili
    3
    Parameter kueri @Gill berguna dalam menentukan parameter matriks kriteria opsional yang merupakan informasi tambahan untuk variabel jalur. Lihat kueri URL ini: localhost / services / api /… matrix: localhost / services / api / movies / actor; name? Limit = 10 Lebih masuk akal bila digunakan sebagai matriks atas kueri. URL ini membuktikan poin 5 dari bdargan.
    skipy