web-dev-qa-db-ja.com

jsonパラメーターを指定したGET要求のカール

このようにcURLを介してコマンドプロンプトからリモートの[REST] APIに "GET"リクエストを送信しようとしています。

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

しかし、出力は返されません。私はブラウザから直接URLをpingしようとしました、私は首尾よく応答を得ることができます、私はコマンドで何が悪いのか理解していません。

基本的に私は "GET"リクエストをリモートのRESTサービスに設定したいと思います。誰が私がしているのはどんな過ちを私に導いてくれる?私はさまざまな投稿を試しましたが、それらのすべてがGETについてではなくPOST要求について話しています。

94
Pradeep Simha

これはうまくいくはずです。

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

xの代わりにユーザーオプション-i。

119
Harshal Bulsara

データを本体の中に送りたい場合は、POSTの代わりにPUTまたはGETを作成する必要があります。

私にとっては、GETとは無関係の、 クエリをuriパラメータ を付けて送信しようとしているようです。 POSTPUTなど。

クエリは疑問符( "?")で区切られたオプションの部分で、階層構造ではない追加の識別情報が含まれています。クエリ文字列の構文は一般的には定義されていませんが、一般的にはセミコロンまたはアンパサンドで区切られた=ペアのシーケンスとして構成されています。

例えば:

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

GETは名前と値のペアを取ります。

次のようにしてください。

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

または

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

ところで、通常のRESTは、次のようになります。

curl http://server:5050/a/c/getName/pradeep GET URLにJSONが含まれる場合、それは標準的な方法ではありません。

8
user2877889

ユーザー名とパスワードで保護されたサービスには以下を使用してください。

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

やってみる

curl -G ...

の代わりに

curl -X GET ...

通常はこのオプションは必要ありません。 GET、HEAD、POST、およびPUT要求のすべての種類は、専用のコマンドラインオプションを使用して呼び出されます。

このオプションはHTTPリクエストで使われる実際のWordを変えるだけで、curlの振る舞いを変えることはありません。そのため、たとえば適切なHEAD要求を行いたい場合は、-X HEADを使用しても不十分です。 -I、--headオプションを使う必要があります。

3
smci

本体にJSONを入れてGETリクエストを送信したい場合は、次の方法があります。

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

最近のほとんどのWebサーバーはこのタイプの要求を受け入れます。

1
Steven Soroka

何らかの理由で、上記の解決策のどれも私にとってうまくいきませんでした。これが私の解決策です。とても基本的です。

curl -X GETAPI_ENDPOINT - H 'コンテンツタイプ:application/json' - d 'JSON_DATA'

API_ENDPOINTはAPIエンドポイントです。例: http://127.0.0.1:80/api

- Hは、ヘッダーの内容を追加するために使用されています。

JSON_DATAはあなたのリクエストボディで、:: {"data_key": "value"}のようなものです。 JSON_DATAを囲む ''は重要です。

- dの後は、GETリクエストで送信する必要があるデータです。

0
bhatman