Da Wikipedia: Uniform Resource Locator
Un percorso , che contiene dati, generalmente organizzati in forma gerarchica , che appare come una sequenza di segmenti separati da barre.
Una query facoltativa , separata dalla parte precedente da un punto interrogativo (?), Contenente una stringa di query di dati non gerarchici .
- In base alla progettazione concettuale dell'URL, potremmo implementare un PathParam per i dati gerarchici / direttive / componenti di localizzazione o implementare un QueryParam quando i dati non sono gerarchici. Questo ha senso perché i percorsi sono naturalmente ordinati, mentre le query contengono variabili che possono essere ordinate in modo arbitrario (coppie variabili / valori non ordinate).
Un precedente commentatore ha scritto,
Penso che se il parametro identifica un'entità specifica, è necessario utilizzare una variabile di percorso.
Un altro ha scritto,
Utilizzare @PathParam per il recupero in base all'ID. Utente @QueryParam per filtro o se si dispone di un elenco fisso di opzioni che l'utente può passare.
Un altro,
Consiglierei di inserire tutti i parametri richiesti nel percorso e tutti i parametri opzionali dovrebbero sicuramente essere parametri della stringa di query.
- Tuttavia, si potrebbe implementare un sistema flessibile, non gerarchico per identificare entità specifiche! Uno potrebbe avere più indici univoci su una tabella SQL e consentire l'identificazione delle entità usando qualsiasi combinazione di campi che compongono un indice univoco! Combinazioni diverse (forse anche ordinate in modo diverso), potrebbero essere utilizzate per collegamenti da varie entità correlate (referrer). In questo caso, potremmo avere a che fare con dati non gerarchici, usati per identificare singole entità - o in altri casi, potremmo specificare solo determinate variabili / campi - alcuni componenti di indici univoci - e recuperare un elenco / set di record. In tali casi, potrebbe essere più semplice, logico e ragionevole implementare gli URL come QueryParams!
Una lunga stringa esadecimale potrebbe diluire / diminuire il valore delle parole chiave nel resto del percorso? Potrebbe valere la pena considerare le potenziali implicazioni SEO del posizionamento di variabili / valori nel percorso o nella querye le implicazioni dell'interfaccia umana sul fatto che desideriamo che gli utenti siano in grado di attraversare / esplorare la gerarchia degli URL modificando il contenuto della barra degli indirizzi. La mia pagina 404 non trovata utilizza le variabili SSI per reindirizzare automaticamente gli URL non funzionanti ai loro genitori! I robot di ricerca potrebbero anche attraversare la gerarchia dei percorsi. D'altra parte, personalmente, quando condivido gli URL sui social media, rimuovo manualmente tutti gli identificatori univoci privati, in genere troncando la query dall'URL, lasciando solo il percorso: in questo caso, c'è qualche utilità nel posizionare identificatori univoci nel percorso piuttosto che nella query. Se vogliamo facilitare l'uso dei componenti del percorso come interfaccia utente grezza, forse dipende dal fatto che i dati / componenti siano leggibili o meno. La questione della leggibilità umana riguarda in qualche modo la questione della gerarchia: spesso, anche i dati che possono essere espressi come parole chiave leggibili dall'uomo sono gerarchici; mentre i dati gerarchici possono spesso essere espressi come parole chiave leggibili dall'uomo. (I motori di ricerca stessi potrebbero essere definiti in modo da aumentare l'uso degli URL come interfaccia utente.) Le gerarchie di parole chiave o direttive potrebbero non essere ordinate rigorosamente, ma di solito sono abbastanza vicine da poter coprire casi alternativi nel percorso, eetichetta un'opzione come il caso "canonico" .
Esistono fondamentalmente diversi tipi di domande a cui potremmo rispondere con l'URL per ogni richiesta:
- Che tipo di record / cosa stiamo richiedendo / servendo?
- A quale (i) siamo interessati?
- Come vogliamo presentare le informazioni / i record?
Q1 è quasi certamente meglio coperto dal percorso o da PathParams. Q3 (che è probabilmente controllato tramite una serie di parametri opzionali arbitrariamente ordinati e valori predefiniti); è quasi sicuramente meglio coperto da QueryParams. Q2: dipende ...