2017-11-08 6 views
0

とJSONの名前付き引数対のデータはrequests library documentationの関連部分によると、POSTメソッドに辞書を渡すための主な方法は次のとおりです。Pythonのライブラリを要求し、次のようrequests.post

その後
r = requests.post(url, data = {"example": "request"}) 

、著者は、JSON文字列をGithub APIに直接渡す例を示しています。著者は、辞書をJSON文字列としてエンコードしてdataで渡すのではなく、単に名前付きパラメータjsonを使って次のように辞書を渡すことができると提案しています。

r= requests.post(url, json = {"example": "request"}) 

あなたがjson代わりのdataを使うのでしょうか?この冗長性は特有であるか意図的であるか?あなたがHTMLページ上のフォームを提出しているようdatadictを渡す

+0

一部のサーバーで特定の形式を受け入れていない可能性があります。そうでなければ、私は特定の選択肢を選択する理由を見つけることはできません。 –

答えて

1

は、dict形式でエンコードされたされます。例えば、data={"example": "request"}は、example=requestのようにリクエスト本文に送信されます。一方、jsonキーワードは、その引数を代わりにJSON値としてエンコードします(Content-Typeヘッダーもapplication/jsonに設定します)。

+0

ありがとうございます。リクエストタイプ(urlencodingとjsonとしてデシリアライズされたテキストストリーム)の違いは明らかなIMOではなく、見出し値のシフトも明らかでした。下位互換性の問題を除いて、いつもあなたはレガシーの 'data'変数をいつ使用するのでしょうか? AFAIK 'json'はリクエスト2.0.0のように遠くまで認識されません。 – W4t3randWind

+0

@ W4t3randWind:JSONを送信する必要がある場合は、後方互換性が実際に 'data'を使用する唯一の理由ですが、要求本体が非JSON形式である必要があるサーバーとAPIがまだ数多くあります。 InfluxDBまたはXMLベースのもの。 – jwodder

関連する問題