Ich versuche, eine "GET" -Anforderung von der 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"}"
Es wird jedoch keine Ausgabe zurückgegeben. Ich habe versucht, die URL direkt über den Browser zu pingen. Ich kann erfolgreich eine Antwort erhalten. Ich verstehe nicht, was mit dem Befehl falsch ist.
Grundsätzlich möchte ich eine "GET" -Anforderung an einen Remote-REST-Dienst richten, der mir JSON-Daten als Antwort über Curl gibt. Kann mir jemand sagen, welchen Fehler ich mache? Ich habe verschiedene Beiträge ausprobiert, aber alle sprechen von POST-Anfragen, nicht von GET.
Antworten:
Das sollte funktionieren :
Verwenden Sie die Option -i anstelle von x.
quelle
'server:5050/a/c/getName{"param0":"pradeep"}'
oder sein"server:5050/a/c/getName{\"param0\":\"pradeep\"}"
.Wenn Sie Ihre Daten innerhalb des Körpers senden möchten, müssen Sie ein
POST
oderPUT
anstelle von erstellenGET
.Für mich sieht es aus wie Sie versuchen , die senden Abfrage mit uri Parameter , die nicht verwandt ist
GET
, können Sie diese Parameter auch setzen aufPOST
,PUT
und so weiter.Beispielsweise:
quelle
Wenn Sie die GET-Anforderung wirklich mit JSON im Hauptteil senden möchten (z. B. für eine XHR-Anforderung und Sie wissen, dass der Server die Verarbeitung des Hauptteils bei GET-Anforderungen unterstützt), können Sie:
Die meisten modernen Webserver akzeptieren diese Art von Anfragen.
quelle
{ "args": {}, "headers": { "Accept": "application/json", "Content-Length": "20", "Content-Type": "application/json", "Host": "httpbin.org", "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:57.0) Gecko/20100101 Firefox/57.0" }, "origin": "27.94.235.50, 27.94.235.50", "url": "https://httpbin.org/get" }
Es wird nichts empfangen. Sie müssen eine Abfragezeichenfolge wiecurl -X GET https://httpbin.org/get?data=%7B%22param0%22%3A%22pradeep%22%7D
GET nimmt Name-Wert-Paare an.
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 dies kein Standard.quelle
Verwenden Sie für durch Benutzernamen und Kennwort geschützte Dienste Folgendes
quelle
Versuchen
anstatt
Normalerweise benötigen Sie diese Option nicht. Alle Arten von GET-, HEAD-, POST- und PUT-Anforderungen werden eher mithilfe dedizierter Befehlszeilenoptionen aufgerufen.
Diese Option ändert nur das tatsächliche Wort, das in der HTTP-Anforderung verwendet wird. Sie ändert nicht das Verhalten von Curl. Wenn Sie beispielsweise eine ordnungsgemäße HEAD-Anforderung stellen möchten, reicht die Verwendung von -X HEAD nicht aus. Sie müssen die Option -I, --head verwenden.
quelle
Keine der oben genannten Lösungen hat aus irgendeinem Grund für mich funktioniert. Hier ist meine Lösung. Es ist ziemlich einfach.
API_ENDPOINT ist Ihr API-Endpunkt, z. B.: Http://127.0.0.1:80/api
-H wurde verwendet, um Header-Inhalte hinzuzufügen.
JSON_DATA ist Ihr Anforderungshauptteil. Es kann so etwas wie :: {"data_key": "value"} sein. '' um JSON_DATA sind wichtig.
Alles nach -d sind die Daten, die Sie in der GET-Anfrage senden müssen
quelle