503 Stimmen

REST API Bewährte Praxis: Wie man eine Liste von Parameterwerten als Eingabe akzeptiert

Wir sind dabei, eine neue REST-API einzuführen, und ich wollte von der Community wissen, wie die Eingabeparameter am besten formatiert werden sollten:

Momentan ist unsere API sehr JSON-zentriert (gibt nur JSON zurück). Die Debatte darüber, ob wir XML zurückgeben wollen/müssen, ist ein anderes Thema.

Da unsere API-Ausgabe JSON-zentriert ist, haben wir einen Weg eingeschlagen, bei dem unsere Eingaben ein wenig JSON-zentriert sind, und ich habe gedacht, dass das für einige bequem sein kann, aber im Allgemeinen seltsam ist.

Zum Beispiel, um ein paar Produktdetails zu erhalten, wo mehrere Produkte auf einmal gezogen werden können, haben wir derzeit:

http://our.api.com/Product?id=["101404","7267261"]

Sollten wir dies vereinfachen als:

http://our.api.com/Product?id=101404,7267261

Oder ist die JSON-Eingabe praktisch? Eher lästig?

Wir möchten vielleicht beide Stile akzeptieren, aber führt diese Flexibilität nicht zu mehr Verwirrung und Kopfschmerzen (Wartbarkeit, Dokumentation usw.)?

Ein komplizierterer Fall liegt vor, wenn wir komplexere Eingaben anbieten wollen. Zum Beispiel, wenn wir mehrere Filter bei der Suche zulassen wollen:

http://our.api.com/Search?term=pumas&filters={"productType":["Clothing","Bags"],"color":["Black","Red"]}

Wir wollen nicht unbedingt die Filtertypen (z.B. productType und color) als Anfragenamen verwenden:

http://our.api.com/Search?term=pumas&productType=["Clothing","Bags"]&color=["Black","Red"]

Denn wir wollten alle Filtereingaben zusammenfassen.

Ist das am Ende wirklich wichtig? Es kann wahrscheinlich sein, dass es so viele JSON-Utilities gibt, dass der Eingabetyp einfach nicht so wichtig ist.

Ich weiß, dass unsere JavaScript-Kunden, die AJAX-Aufrufe an die API tätigen, die JSON-Eingaben zu schätzen wissen, die ihnen das Leben erleichtern.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X