2017-11-03 3 views
0

Es gibt eine RESTful-API mit einigen Ressourcen. Ich muß einige Ressourcen mit dem Parameter erhalten, die in JSON Darstellung wie folgt aussieht:Wie übergebe ich ein sehr langes Array von Objekten in einer Abfragezeichenfolge?

{ 
    "id": int, 
    "params": 
    [ 
    { 
     "param1": "string", 
     "param2": "string" 
    }, 
    { 
     "param1": "string", 
     "param2": "string" 
    } 
    ] 
} 

ich zwei Möglichkeiten habe diese Aufgabe in dem Query-String zu senden:

  • id=1&params[0].param1=test&params[0].param2=test&params[1].param1=test&params[1].param2=test
  • id=10000&params[0][param1]=test&params[0][param2]=test&params[1][param1]=test&params[1][param2]=test

Das Problem ist, dass params Array kann eine haben Viele Elemente und die Abfragezeichenfolge kann sehr lang sein und über 2000 Zeichen lang sein.

Das Senden von Parametern im Anfragetext über GET ist eine schlechte Idee.

Wie kann ich solche params in einer angemessenen RESTful Weise senden? Kann ich eine andere HTTP-Methode verwenden? Oder ändern Sie einfach die Abfrage Länge auf dem Server?

Antwort

1

Verwenden Sie eine POST Methode einige Daten zu bekommen, weil params zu lang für eine GET-Methode ist IS keine schlechte Idee.

Sie können die Suchoptionen im Körper der Anfrage in JSON wie

{ 
    "id": int, 
    "params": 
    [ 
    { 
     "param1": "string", 
     "param2": "string" 
    }, 
    { 
     "param1": "string", 
     "param2": "string" 
    } 
    ] 
} 
+0

Ich weiß, dass ich params in Körper senden kann. Aber sie zu GET Verb hinzufügen ist eine schlechte Idee https://stackoverflow.com/questions/978061/http-get-with-request-body. POST ist für die Erstellung von Ressourcen, also frage ich mich, ob es RESTful ist, es zu benutzen, um Informationen zu erhalten. –

+1

POST ist hauptsächlich (und nicht STRENG) zum Erstellen von Ressourcen. Wenn Sie die GET-Methode unbedingt verwenden möchten, können Header eine Lösung sein, aber nicht besser als eine POST-Lösung. –

+0

Könnten Sie bitte einen Link senden, der Ihre Aussage bestätigt? Ich habe gelesen [SO Diskussion] (https://stackoverflow.com/questions/46585/when-do-you-use-post-and-when-do-you-use-get), [HTTP-Spezifikation] (https : //tools.ietf.org/html/rfc2616) und [W3-Artikel] (https://www.w3.org/2001/tag/doc/whenToUseGet.html). Sie wissen, technisch benutze ich wahrscheinlich den POST. Ich möchte nur bestätigen, dass es in Ordnung ist, aber keine Informationen finden. Deshalb habe ich es hier gefragt :) –

0

hinzufügen Wenn Sie eine Idempotent Anforderungs-URI wollen (das heißt Antwort immer die gleiche ist), dann verwenden Sie GET, POST sonst.

Für weitere Informationen können Sie hier für s Antwort finden: - Why should I POST data rather than GET?

Verwandte Themen