Attualmente sto progettando un'API e ho riscontrato un piccolo problema: Come dovrebbe apparire un URL di un'API RESTful quando dovresti essere in grado di identificare un oggetto con un ID o una lumaca?Identifica l'elemento con un ID o uno slug in un'API RESTful
riuscivo a pensare a tre opzioni:
GET /items/<id>
GET /items/<slug>
Ciò richiede che la lumaca e l'ID sono distinguibili, che non è necessariamente dato in questo caso. Non riesco a pensare a una soluzione pulita per questo problema, tranne che si fa qualcosa di simile:
GET /items/id/<id>
GET /items/slug/<slug>
Questo avrebbe funzionato bene, ma questo non è l'unico posto dove voglio identificare gli elementi da una una lumaca o un ID e sarebbe presto diventato molto brutto quando si vuole implementare lo stesso approccio per le altre azioni. E 'solo che non molto estensibile, che ci porta a questo approccio:
GET /items?id=<id>
GET /items?slug=<slug>
Questa sembra essere una buona soluzione, ma non so se è quello che ci si aspetterebbe, e quindi potrebbe portare a errori frustrante dovuti a un uso non corretto. Inoltre, non è così semplice - o diciamo pulito - implementare il routing per questo. Tuttavia, sarebbe facilmente estensibile e sarebbe molto simile al metodo per ottenere gli oggetti multipli:
GET /items?ids=<id:1>,<id:2>,<id:3>
GET /items?slugs=<slug:1>,<slug:2>,<slug:3>
Ma questo ha anche un rovescio della medaglia: cosa succede se qualcuno vuole identificare alcune delle voci che vogliono andare a prendere con ID, ma gli altri con una lumaca? Mischiare questi identificatori non sarebbe facile da ottenere con questo.
Qual è la soluzione migliore e più ampiamente accettata per questi problemi ? In generale, cosa conta durante la progettazione di tale API?
Domanda all'interno di una domanda, cos'è una lumaca? –
Wikipedia dice: "un breve testo user-friendly SEO-friendly utilizzato in un URL per identificare e descrivere una risorsa" o qualcosa di simile. –
Sulla base di esempi in questo articolo di Wikipedia e nel glossario di Wordpress (http://codex.wordpress.org/Glossary#Slug) sembra che una lumaca sia parte di un url già gerarchico. Quindi nel tuo caso forse gli articoli sono per ID, ma gli articoli// (ad esempio) sono per slug. –