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