Ich erstelle eine REST-API für mein Projekt. Die API zum Abrufen der INFO eines bestimmten Benutzers lautet:
api.com/users/[USER-ID]
Ich möchte dem Client auch erlauben, eine Liste von Benutzer-IDs zu übergeben. Wie kann ich die API so erstellen, dass sie REST-fähig ist und eine Liste von Benutzer-IDs enthält?
Antworten:
Wenn Sie alle Ihre Parameter an die URL übergeben, sind wahrscheinlich durch Kommas getrennte Werte die beste Wahl. Dann hätten Sie eine URL-Vorlage wie die folgende:
quelle
…?id=1&id=2&id=3
kann nicht garantiert werden, dass doppelte Abfrageparameter zu einem Array kombiniert werden. Mit der obigen Abfragezeichenfolge sagt PHP Ihnen, dass diesid
gleich ist[1, 2, 3]
, aber Ruby on Rails sagt Ihnen, dass es gleich ist3
, und andere Frameworks können sich auch andersid
verhalten , z1
. B. gleich . URLs wie…?id=1,2,3
vermeiden dieses Verwirrungspotential.IMO, obige Aufrufe sehen nicht RESTful aus, dies sind jedoch schnelle und effiziente Problemumgehungen (y). Die Länge der URL ist jedoch durch den Webserver begrenzt, z . B. Tomcat .
RESTful Versuch:
Der Server antwortet auf den URI der neu erstellten Batchtask- Ressource.
Jetzt kann der Client die Stapelantwort oder den Aufgabenfortschritt durch Abrufen abrufen
GET http://example.com/api/batchtask/1254
So haben andere versucht , dieses Problem zu lösen:
quelle
Ich finde einen anderen Weg, dasselbe zu tun, indem ich benutze
@PathParam
. Hier ist das Codebeispiel.Rufen Sie den Dienst unter Verwendung der folgenden URL an.
wo
quelle
So sehr ich diesen Ansatz bevorzuge:
Der richtige Weg ist
oder
So macht es das Rack . So macht es PHP . So macht es auch der Knoten ...
quelle
Sie können mit ASP.NET MVC eine Rest-API oder ein Restful-Projekt erstellen und Daten als JSON zurückgeben. Eine beispielhafte Steuerungsfunktion wäre:
Dann rufen Sie einfach die GetUsers-Funktion über eine reguläre AJAX-Funktion auf, die das Array von IDs bereitstellt (in diesem Fall verwende ich jQuery stringify, um das Array als Zeichenfolge zu senden und es im Controller wieder zu entmaterialisieren, aber Sie können einfach das Array von Ints senden und empfangen es als Array von Ints im Controller). Ich habe mit ASP.NET MVC eine vollständige Restful-API erstellt, die die Daten als domänenübergreifendes JSON zurückgibt und von jeder App aus verwendet werden kann. Das natürlich, wenn Sie ASP.NET MVC verwenden können.
quelle