Identifizieren Sie den Artikel anhand einer ID oder eines Slugs in einer RESTful-API

Ich entwerfe gerade eine API und bin auf ein kleines Problem gestoßen:Wie sollte eine URL einer RESTful-API aussehen, wenn Sie in der Lage sein sollten, einen Artikel entweder anhand einer ID oder eines Slugs zu identifizieren?

Ich könnte mir drei Möglichkeiten vorstellen:

<code>GET /items/<id>
GET /items/<slug>
</code>

Dies setzt voraus, dass der Slug und die ID unterscheidbar sind, was in diesem Fall nicht unbedingt gegeben ist. Ich kann mir keine saubere Lösung für dieses Problem vorstellen, außer dass Sie so etwas tun:

<code>GET /items/id/<id>
GET /items/slug/<slug>
</code>

Dies würde gut funktionieren, jedoch ist dies nicht der einzige Ort, an dem ich Elemente entweder anhand einer Schnecke oder einer ID identifizieren möchte, und es würde bald sehr hässlich werden, wenn einer den gleichen Ansatz für die anderen Aktionen implementieren möchte. Es ist einfach nicht sehr erweiterbar, was uns zu diesem Ansatz führt:

<code>GET /items?id=<id>
GET /items?slug=<slug>
</code>

Dies scheint eine gute Lösung zu sein, aber ich weiß nicht, ob es das ist, was man erwarten würde, und daher könnte es aufgrund falscher Verwendung zu frustrierenden Fehlern kommen. Es ist auch nicht so einfach - oder sagen wir sauber -, das Routing für dieses zu implementieren. Es wäre jedoch leicht erweiterbar und würde dem sehr ähnlich sehenMethode zum Abrufen mehrerer Elemente:

<code>GET /items?ids=<id:1>,<id:2>,<id:3>
GET /items?slugs=<slug:1>,<slug:2>,<slug:3>
</code>

Dies hat aber auch einen Nachteil: Was passiert, wenn jemand einige der Objekte, die er abrufen möchte, mit Ausweisen identifizieren möchte, die anderen jedoch mit einer Schnecke? Das Mischen dieser Bezeichner wäre damit nicht einfach.

Was ist die beste und am weitesten verbreitete Lösung für dieseProbleme? Worauf kommt es beim Entwerfen einer solchen API im Allgemeinen an?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage