Frage Curl GET Anfrage mit JSON Parameter


Ich versuche, eine "GET" -Anforderung von einer Eingabeaufforderung über cURL wie folgt an eine Remote-REST-API zu senden:

curl -X GET -H "Content-type: application/json" -H "Accept: application/json"  "http://server:5050/a/c/getName/{"param0":"pradeep"}"

Aber es gibt keine Ausgabe zurück. Ich habe versucht, die URL direkt vom Browser zu pingen, ich bin in der Lage, die Antwort erfolgreich zu bekommen, ich verstehe nicht, was mit dem Befehl falsch ist.

Im Grunde möchte ich eine "GET" Anfrage an einen entfernten REST Service stellen, der mir json Daten als Antwort per curl gibt. Kann mir irgendjemand sagen, welchen Fehler ich mache? Ich habe verschiedene Posts ausprobiert, aber alle sprechen über POST-Anfragen und nicht über GET.


76
2018-01-24 06:59


Ursprung


Antworten:


Das sollte funktionieren :

  curl -i -H "Accept: application/json" "server:5050/a/c/getName{"param0":"pradeep"}" 

Benutzeroption -i anstelle von x.


102
2018-01-24 07:15



Wenn Sie Ihre Daten in den Körper senden möchten, müssen Sie ein POST oder PUT Anstatt von GET.

Für mich sieht es so aus, als ob du versuchst, die Abfrage mit URI-Parametern, die nicht verwandt ist mit GETSie können diese Parameter auch setzen POST, PUT und so weiter.

Die Abfrage ist ein optionaler Teil, getrennt durch ein Fragezeichen ("?"), Das zusätzliche Identifikationsinformationen enthält, die nicht hierarchischer Natur sind. Die Syntax der Abfragezeichenfolge ist nicht generisch definiert, wird jedoch normalerweise als Folge von = Paaren organisiert, wobei die Paare durch ein Semikolon oder ein Und-Zeichen getrennt sind.

Beispielsweise:

curl http://server:5050/a/c/getName?param0=foo&param1=bar

13
2018-01-24 07:34



GET akzeptiert Name-Value-Paare.

Versuchen Sie etwas wie:

curl http://server:5050/a/c/getName/?param1=pradeep

oder

curl http://server:5050/a/c/getName?param1=pradeep

Übrigens sollte ein normaler REST ungefähr so ​​aussehen

curl http://server:5050/a/c/getName/pradeep Wenn JSON in der GET URL verwendet wird, ist das kein Standardweg.


7
2018-01-24 07:11



Verwenden Sie für Benutzernamen und kennwortgeschützte Dienste Folgendes

curl -u admin:password -X GET http://172.16.2.125:9200 -d '{"sort":[{"lastUpdateTime":{"order":"desc"}}]}'

5
2018-03-21 00:11



Versuchen

curl -G ...

Anstatt von

curl -X GET ...

Normalerweise benötigen Sie diese Option nicht. Alle Arten von GET-, HEAD-, POST- und PUT-Anforderungen werden mit dedizierten Befehlszeilenoptionen aufgerufen.

Diese Option ändert nur das tatsächliche Wort, das in der HTTP-Anfrage verwendet wird, es ändert nichts an der Art, wie sich curl verhält. Wenn Sie also zum Beispiel eine HEAD-Anfrage machen wollen, reicht die Verwendung von -X HEAD nicht aus. Sie müssen die Option -I, --head verwenden.


2
2017-08-14 00:41