web-dev-qa-db-ja.com

POST JSONファイルの内容をPythonを使用してRESTFUL APIに変換する方法

さて、私はあきらめます。 JSONを含むファイルのコンテンツを投稿しようとしています。ファイルの内容は次のようになります。


{
     "id”:99999999,
     "orders":[
     {
             "ID”:8383838383,
             "amount":0,
             "slotID":36972026
     },
     {
             "ID”:2929292929,
             "amount":0,
             "slotID":36972026
     },
     {
             "ID”:4747474747,
             "amount":0,
             "slotID":36972026
     }]
}

これはおそらく適切ではないコードです:

#!/usr/bin/env python3

import requests
import json

files = {'file': open(‘example.json’, 'rb')}
headers = {'Authorization' : ‘(some auth code)’, 'Accept' : 'application/json', 'Content-Type' : 'application/json'}

r = requests.post('https://api.example.com/api/dir/v1/accounts/9999999/orders', files=files, headers=headers)
10
Jeff F

これは動作するはずですが、非常に大きなファイルを対象としています。

import requests

url = 'https://api.example.com/api/dir/v1/accounts/9999999/orders'
headers = {'Authorization' : ‘(some auth code)’, 'Accept' : 'application/json', 'Content-Type' : 'application/json'}
r = requests.post(url, data=open('example.json', 'rb'), headers=headers)

小さいファイルを送信する場合は、文字列として送信してください。

contents = open('example.json', 'rb').read()
r = requests.post(url, data=contents, headers=headers)
10
jack

まず、jsonファイルに有効なjsonが含まれていません。のように、"id”-ここで、終了引用符は開始引用符とは異なります。他のIDフィールドにも同じエラーがあります。このようにしてください"id"

今、あなたはこのようにそれを行うことができます、

import requests
import json
with open('example.json') as json_file:
    json_data = json.load(json_file)

headers = {'Authorization' : ‘(some auth code)’, 'Accept' : 'application/json', 'Content-Type' : 'application/json'}

r = requests.post('https://api.example.com/api/dir/v1/accounts/9999999/orders', data=json.dumps(json_data), headers=headers)
2
salmanwahed

JSONを解析し、その本体を次のように渡す必要があります。

import requests
import json
json_data = None

with open('example.json') as json_file:
    json_data = json.load(json_file)

auth=('token', 'example')

r = requests.post('https://api.example.com/api/dir/v1/accounts/9999999/orders', json=json_data, auth=auth)
0
Ray Hulha