URI che rappresenta una singola risorsa con due possibili identificatori

1

Ho una risorsa che può essere rappresentata in due modi:

  1. Numero di serie grande o
  2. Numero di serie piccolo

È più aderente ai principi REST:

  • A: una stringa di query specifica il tipo ( link rispetto a link ) o
  • B: stringhe di query specifica il tipo come parametri di ricerca ( link vs link ) o
  • C: nell'URI ( link vs link ) o
  • D: qualcos'altro (es: intestazioni)?

Per me, sembra che averlo nell'URI (opzione C) specifica una risorsa completamente diversa, e in questo caso, dovrebbero rappresentare esattamente la stessa risorsa. L'opzione A è il modo migliore per rappresentarlo?

    
posta Bullines 23.05.2014 - 15:40
fonte

1 risposta

3

Il modo in cui decidi di strutturare l'URI non è essenziale per REST, che è un modello di interazione. Se lavori con i server web e lavori su una base di richiesta anziché su una conversazione, sei già nel modo operativo RESTful.

Non sono a conoscenza di un consenso accettato su quale forma di URI sia preferibile e potrebbe essere una questione di opinione. Preferisco C perché vedo il percorso URI come parte "solida" di un URI e i parametri della query come una modifica "temporanea" per query, come la richiesta in JSON anziché XML. Ma alla fine, è solo una mia opinione . In ogni caso, non esiste alcuna regola per non avere URI multipli per le stesse informazioni, quindi C non è meno redditizio degli altri.

StackOverflow ha una domanda interessante e risposte approfondite al riguardo: API REST Best practice: dove mettere i parametri?

Per quanto riguarda i tuoi ID, esaminerò questo problema attraverso l'obiettivo di un ipotetico utente / consumatore degli URI, il che mi porta a due considerazioni:

I tuoi tipi di ID sono sinteticamente distinguibili? In questo modo, se ti do una stringa, puoi dire con certezza al 100% quale tipo è? Se sì, non distinguere tra breve e lungo; accettali entrambi in modo intercambiabile.

acme.org/widget/aaa-111-aaa
acme.org/widget/aaa

Il numero piccolo richiede più informazioni? Una categoria, forse? Allora hai già due percorsi diversi e non devi preoccuparti del resto (non è previsto il gioco di parole):

acme.org/widget/aaa-111-aaa
acme.org/widget/dynamite/aaa
    
risposta data 23.05.2014 - 19:42
fonte

Leggi altre domande sui tag