このように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要求について話しています。
これはうまくいくはずです。
curl -i -H "Accept: application/json" "server:5050/a/c/getName{'param0':'pradeep'}"
xの代わりにユーザーオプション-i。
データを本体の中に送りたい場合は、POST
の代わりにPUT
またはGET
を作成する必要があります。
私にとっては、GET
とは無関係の、 クエリをuriパラメータ を付けて送信しようとしているようです。 POST
、PUT
など。
クエリは疑問符( "?")で区切られたオプションの部分で、階層構造ではない追加の識別情報が含まれています。クエリ文字列の構文は一般的には定義されていませんが、一般的にはセミコロンまたはアンパサンドで区切られた=ペアのシーケンスとして構成されています。
例えば:
curl http://server:5050/a/c/getName?param0=foo¶m1=bar
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が含まれる場合、それは標準的な方法ではありません。
ユーザー名とパスワードで保護されたサービスには以下を使用してください。
curl -u admin:password -X GET http://172.16.2.125:9200 -d '{"sort":[{"lastUpdateTime":{"order":"desc"}}]}'
やってみる
curl -G ...
の代わりに
curl -X GET ...
通常はこのオプションは必要ありません。 GET、HEAD、POST、およびPUT要求のすべての種類は、専用のコマンドラインオプションを使用して呼び出されます。
このオプションはHTTPリクエストで使われる実際のWordを変えるだけで、curlの振る舞いを変えることはありません。そのため、たとえば適切なHEAD要求を行いたい場合は、-X HEADを使用しても不十分です。 -I、--headオプションを使う必要があります。
本体にJSONを入れてGETリクエストを送信したい場合は、次の方法があります。
curl -X GET \
-H "Content-type: application/json" \
-H "Accept: application/json" \
-d '{"param0":"pradeep"}' \
"http://server:5050/a/c/getName"
最近のほとんどのWebサーバーはこのタイプの要求を受け入れます。
何らかの理由で、上記の解決策のどれも私にとってうまくいきませんでした。これが私の解決策です。とても基本的です。
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リクエストで送信する必要があるデータです。