Domanda

Al lavoro qui, abbiamo una scatola che serve feed XML ai partner commerciali. Le richieste per i nostri feed sono personalizzate specificando parametri e valori della stringa di query. Alcuni di questi parametri sono richiesti, ma molti non lo sono.

Ad esempio, abbiamo richiesto a tutte le richieste di specificare un GUID per identificare il partner e una richiesta può essere per un " get latest " o " cerca " Azione:

Per una ricerca: http: //services.null .ext /? id = [GUID] & amp; q = [Cerca Parole chiave]
Ultimi dati nella categoria: http: //services.null. ? ext / id = [GUID] & amp; category = [ID]

Strutturare uno schema URL RESTful per questi parametri è semplice:

Cerca: http: //services.null.ext/ [GUID] / ricerca / [keywords] Più recente: http: //services.null.ext/ [ GUID] / ultima / categoria / [ID]

Ma come dovremmo gestire la dozzina di parametri facoltativi che abbiamo? Molti di questi si escludono a vicenda e molti sono richiesti in combinazioni. Molto rapidamente, il numero di possibili percorsi diventa estremamente complesso.

Quali sono alcune pratiche consigliate su come mappare gli URL con stringhe di query complesse su più amichevole / REST / ful / percorsi?

(Sono interessato a convenzioni, schemi, schemi, ecc. Tecnologie non specifiche per implementare la riscrittura degli URL su un server web o in un framework.)

È stato utile?

Soluzione

È necessario lasciare parametri di query facoltativi nella stringa di query. Non esiste una "regola" in REST che dice che non può esserci una stringa di query. In realtà, è esattamente il contrario. La stringa di query deve essere utilizzata per modificare la vista della rappresentazione che si sta trasferendo al client.

Attenersi a " Entità con stato rappresentabile " per i componenti del percorso URL. La categoria sembra OK, ma che cosa stai alimentando in XML? Messaggi? Articoli del catalogo? Parti?

Penso che una tassonomia REST molto migliore sarebbe simile a questa (supponendo che il contenuto del tuo feed XML sia un "articolo"):

Se non stai pensando alle entità che stai rappresentando mentre costruisci la tua struttura REST, non stai facendo REST. Stai facendo qualcos'altro.

Dai un'occhiata a questo articolo sulle migliori pratiche REST . È vecchio, ma può aiutare.

Altri suggerimenti

Parametri con valori? Un'opzione è la stringa di query. Usarlo non è intrinsecamente non riposante. Un'altra opzione è quella di utilizzare il punto e virgola, Tim Berners-Lee ne parla e potrebbero semplicemente adattarsi al conto, consentendo all'URL di avere un senso, senza avere percorsi massicciamente lunghi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top