Wie soll ich mehrere Parameter an ein ASP.Net Web API GET übergeben?

Ich verwende die .Net MVC4-Web-API, um (hoffentlich) eine RESTful-API zu implementieren. Ich muss ein paar Parameter an das System übergeben und es eine Aktion ausführen lassen und dann eine Liste von Objekten als Ergebnis zurückgeben. Insbesondere übergebe ich zwei Daten und gebe Aufzeichnungen zurück, die zwischen ihnen liegen. Ich verfolge auch die zurückgegebenen Aufzeichnungen, damit nachfolgende Anrufe nicht im System erneut verarbeitet werden.

Ich habe ein paar Ansätze in Betracht gezogen:

Serialisieren Sie die Parameter in eine einzige JSON-Zeichenfolge und wählen Sie sie in der API aus.http://forums.asp.net/t/1807316.aspx/1

Übergeben Sie die Parameter in der Abfragezeichenfolge.
Was ist der beste Weg, um mehrere Abfrageparameter an eine erholsame API zu übergeben?

Die Parameter in der Route definieren: api / controller / date1 / date2

Verwenden eines POST, mit dem ich von Natur aus ein Objekt mit params übergeben kann.

Durchsuchen Sie ODATA, da es (derzeit) von der Web-API unterstützt wird. Ich habe noch nicht viel damit gemacht, daher bin ich nicht sehr vertraut damit.

Es scheint, dass richtige REST-Praktiken anzeigen, dass Sie ein GET verwenden sollten, wenn Daten abgerufen werden. GET sollte jedoch auch nullpotent sein (keine Nebenwirkungen hervorrufen), und ich frage mich, ob meine spezifische Implementierung dies verletzt, da ich Datensätze im API-System markiere und daher Nebenwirkungen hervorrufe.

Es führte mich auch zu der Frage, ob variable Parameter unterstützt werden sollen. Wenn sich die Liste der Eingabeparameter ändert, wäre es mühsam, Ihre Route für Choice 3 neu zu definieren, wenn dies häufig vorkommt. Und was kann passieren, wenn die Parameter zur Laufzeit definiert werden?

In jedem Fall scheint für meine spezifische Implementierung, welche Wahl (wenn überhaupt) am besten zu sein?

Antworten auf die Frage(9)

Ihre Antwort auf die Frage