2

私がやろうとしているのは、私が提供している IP アドレスを取得し、JSON RESTful API から取得している配列を更新するスクリプトを作成することです。配列からデータをうまく引き出すことができます。これまでの私のコードは次のようになります(コードの外観を許してください)

import requests
import json
import sys

pool_name = sys.argv[1]
add_node = sys.argv[2]

url = 'https://<stingray RESTApi>:9070/api/tm/1.0/config/active/pools/' + pool_name
jsontype = {'content-type': 'application/json'}
client = requests.Session()
client.auth = ('<username>', '<password>')
client.verify = 0

response = client.get(url)
pools = json.loads(response.content)
nodes = pools['properties']['basic']['nodes'] 

今、私はこれを使用して見てきました

client.put(url, <I am stuck>, headers = jsontype)

この時点で、私は現在の Python のノウハウの限界に達しました (ここ数日で学び始めたばかりなので)。このようなものを使用して、収集したデータを配列に追加し、それを PUT しようとすることも検討しました。

updatepool['properties']['basic']['nodes'].append(add_node)

updatepool を印刷すると、私が求めているものが機能していることがわかりますが、それを配列に入れると困惑しました。

どんな助けでも本当に感謝しています。

ありがとう

更新: これは私のコードの更新で、API から 400 応答を受け取ります

#!/usr/bin/python

import requests 
import json 
import sys 

pool_name = sys.argv[1]
#add_node = sys.argv[2]
add_node = u'10.10.10.1:80'

url = 'https://<uri>:9070/api/tm/1.0/config/active/pools/' + pool_name  
jsontype = {'content-type': 'application/json'}
client = requests.Session()  
client.auth = ('<username>', '<password')  
client.verify = 0  

response = client.get(url)  
pools = json.loads(response.content)
nodes = pools['properties']['basic']['nodes']
data = nodes
data.append(add_node)

print client.put(url,json.dumps(data), headers=jsontype)
4

2 に答える 2

0

ドキュメントから

印刷 requests.put. doc PUT リクエストを送信します。:class:Responseオブジェクトを返します。

:param url: URL for the new :class:`Request` object.
:param data: (optional) Dictionary, bytes, or file-like object to send in the body of the :class:`Request`.
:param \*\*kwargs: Optional arguments that ``request`` takes.

動作しclient.put(url, {'key':'value'}, headers = jsontype) ます。

ここで知っておく必要があるのは、その URL が受け入れているキー val です。使用できる「ノード」とキーを受け入れると仮定します。

client.put(url, {'node':add_node}, headers = jsontype) 

また

client.put(url, {'node':updatepool['properties']['basic']['nodes']**[0]**}, headers = jsontype)

最初のノードを送信する

于 2014-03-14T10:26:54.517 に答える