2016-06-14 17 views
0

私はdjango pythonで構築された、文書化されていない古いAPIにデータを投稿する形式を理解しようとしています。APIのJSON POST形式の検索

POST抽出するために、次のコードを使用してAPI:

data = dict(data="[1,3]")                
    r = requests.post("http://apiurl", auth=("user", "pass"), data=data) 

ids = json.loads(request.POST.get("data", "[]")) 

idsはint値

次のスクリプトは、APIに投稿作品の配列であります次は動作しません。

data = dict(data="[1,3]") 
data = json.dumps(data) 
r = requests.post("http://apiurl", auth=("user", "pass"), data=data) 

第三者がこのAPIに投稿する必要があるjsonをどのように把握すればよいですか?

+0

このAPIはどこですか?あなた自身のアプリですか? apiにHEADまたはOPTIONS要求をしたときの応答は何ですか? –

+0

これは私自身のAPIで、別の開発者によって書かれました。 HEADとOPTIONSはどちらも200を返します。 – gmccoy

+0

@gmccoy:コードを見なければなりません。あなたがAPIについて何か知っていない限り、それをブラックボックスのように扱うことはおそらくあなたを非常に遠くにさせません。 – Blender

答えて

1
In[2]: import json 
In[3]: data = dict(data="[1,3]") 
In[4]: data 
Out[4]: {'data': '[1,3]'} 
In[5]: json.dumps(data) 
Out[5]: '{"data": "[1,3]"}' 

json.dumps(data)は文字列を返します。 requests doc

から

:PARAMデータ:(オプション)辞書、バイト、または本体に を送信するファイルのようなオブジェクト:クラス:Request

ですから、ハンドルを使用API​​が正しくJSONでリクエストを投稿:

{"data": "[list of ints]"} 
#e.g. 
{"data": "[2,3,4,5]"} 

をし、それはあなたが第三者を把握することができます。

+0

ありがとう、私はちょうどJSONが混在するものの構文を持っていました。 – gmccoy

関連する問題