Quando utilizzare i parametri di query rispetto ai parametri di matrice?


90

Parametri della query :http://example.com/apples?order=random&color=blue

Parametri della matrice :http://example.com/apples;order=random;color=blue

  1. Quando si dovrebbero utilizzare i parametri di query rispetto ai parametri di matrice?
  2. Perché i parametri della matrice possono essere utilizzati nel mezzo di un URL ma i parametri di query no? Per esempio:http://example.com/apples;order=random;color=blue/2006/archive
  3. Se i parametri della matrice sono un superset di parametri di query, perché non utilizzarli sempre?

Puoi leggere di più sui parametri della matrice qui: http://www.w3.org/DesignIssues/MatrixURIs.html

Risposte:


110

Le differenze tra i parametri Matrix e Query Parameters sono molto più che semplici convenzioni.

Le principali differenze sono:

  • gli URL con parametri di query non avranno la loro risposta memorizzata nella cache da intermediari / proxy (al momento)
  • i parametri della matrice possono apparire ovunque nel percorso
  • il calcolo dell'uri relativo è diverso
  • i parametri delle query sono generalmente abusati per aggiungere nuovi verbi invece di utilizzare metodi esistenti sulle risorse
  • i parametri della matrice non sono risorse, sono aspetti che aiutano a fare riferimento a una risorsa in uno spazio informativo difficile da rappresentare all'interno di una gerarchia
  • L'ho scritto in modo più dettagliato e con più riferimenti in Query vs. Matrix Parameters


    4
    "gli URL con parametri di query non avranno la loro risposta memorizzata nella cache da intermediari / proxy". Non è solo una cosa specifica dell'implementazione? Non vedo nulla nello standard HTTP che richieda questo comportamento ...
    Gili

    1
    In sintesi: se quello che dici è vero, perché non dovresti migrare tutti i parametri di query in parametri di matrice?
    Gili

    2
    @Gili non ha mai detto che il comportamento è imposto da HTTP. dal suo articolo: "Gli intermediari (proxy) non memorizzano nella cache alcun URL con un parametro di query nell'URL. questo perché nei primi giorni del Web non si fidavano delle informazioni di controllo della cache dalle pagine generate dinamicamente". Le specifiche e la pratica del mondo reale a volte (o nella maggior parte dei casi) differiscono.
    Hendy Irawan

    6
    Questa risposta è sbagliata per 3/5. La differenza rispetto agli URI relativi e la capacità di incorporare parametri nel mezzo di un percorso sono vere. Tutti gli altri punti sono sbagliati, in quanto i parametri della matrice avranno lo stesso identico problema una volta che diventeranno più popolari, quindi non saranno diversi dai parametri della query a tale riguardo.
    Gili

    3
    I parametri di query @Gill sono utili per definire i parametri opzionali della matrice dei criteri sono informazioni supplementari alla variabile di percorso. Vedi questa query URL: localhost / services / api /… matrix: localhost / services / api / movies / actor; name? Limit = 10 Ha più senso se usato come matrice su query. Questo URL dimostra il punto 5 di bdargan.
    skipy
    Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
    Licensed under cc by-sa 3.0 with attribution required.