私はAPIラッパーに取り組んでいます。私が構築しようとしている仕様には、次の要求が含まれています。
curl -H "Content-type:application/json" -X POST -d data='{"name":"Partner13", "email":"example@example.com"}' http://localhost:5000/
このリクエストは、送信されたヘッダー/パラメーターなどを正確に確認するためにセットアップした小さなテストサーバーから次のレスポンスを生成します。この小さなスクリプトは以下を生成します:
uri: http://localhost:5000/,
method: POST,
api_key: None,
content_type: application/json,
params: None,
data: data={"name":"Partner13", "email":"example@example.com"}
上記は、小さなテスト スクリプトにヒットしたときに、Python スクリプトで作成する結果です。
私はこれまでに使用した中で最も美しい HTTP ライブラリである python requests モジュールを使用しています。だからここに私のpythonコードがあります:
uri = "http://localhost:5000/"
headers = {'content-type': 'application/json' }
params = {}
data = {"name":"Partner13", "email":"example@exmaple.com"}
params["data"] = json.dumps(data)
r = requests.post(uri, data=params, headers=headers)
とてもシンプルなもの。ヘッダーを設定し、POST パラメーターの辞書を作成します。そのディクショナリには、サーバーに送信するデータの JSON 文字列である「data」というエントリが 1 つあります。それから私はポストに電話します。ただし、私の小さなテスト スクリプトが返す結果は次のとおりです。
uri: http://localhost:5000/,
method: POST,
api_key: None,
content_type: application/json,
params: None,
data: data=%7B%22name%22%3A+%22Partner13%22%2C+%22email%22%3A+%22example%40example.com%22%7D
したがって、基本的に、data パラメーターで送信したい json データは urlendcoded されています。
これを修正する方法を知っている人はいますか?リクエストのドキュメントに目を通しましたが、送信データを自動 urlencode しない方法が見つからないようです。
どうもありがとう、ケビン