使用 PUT <key,value> 到 etcd 的请求导致空值
Using requests to PUT <key,value> into etcd results in empty value
我正在尝试使用请求 运行 一个简单的 PUT 并向 etcd 添加一个新对(我在本地有 运行ning)。我可以像这样直接调用 etcd 来做到这一点:
curl -X PUT http://127.0.0.1:2379/v2/keys/message -d value="Test Message"
但是,我认为与此等效的下面的代码似乎不起作用:
import requests
r = requests.put('http://127.0.0.1:2379/v2/keys/message', data = 'value=\"Test Message\"')
print(r.content)
上面的打印语句向我展示了这一点:
b'{"action":"create","node":{"key":"/message/35","value":"","modifiedIndex":35,"createdIndex":35}}\n'
因此 value 的值似乎由于某种原因为空。我已经为 data 参数尝试了多种格式,但没有成功。
首先,您可以通过r.request
获取来自r
的发送请求。然后你可以看到它有什么问题:
>>> r = requests.put("http://www.example.com", data="value=\"Test Message\"")
>>> r.request
<PreparedRequest [PUT]>
>>> r.request.url
'http://www.example.com/'
>>> r.request.body
'value="Test Message"'
>>> r.request.headers
{'User-Agent': 'python-requests/2.18.4', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Length': '20'}
其次,我认为你应该使用r = requests.put('http://127.0.0.1:2379/v2/keys/message', data={"value": "Test Message"})
我正在尝试使用请求 运行 一个简单的 PUT 并向 etcd 添加一个新对(我在本地有 运行ning)。我可以像这样直接调用 etcd 来做到这一点:
curl -X PUT http://127.0.0.1:2379/v2/keys/message -d value="Test Message"
但是,我认为与此等效的下面的代码似乎不起作用:
import requests
r = requests.put('http://127.0.0.1:2379/v2/keys/message', data = 'value=\"Test Message\"')
print(r.content)
上面的打印语句向我展示了这一点:
b'{"action":"create","node":{"key":"/message/35","value":"","modifiedIndex":35,"createdIndex":35}}\n'
因此 value 的值似乎由于某种原因为空。我已经为 data 参数尝试了多种格式,但没有成功。
首先,您可以通过r.request
获取来自r
的发送请求。然后你可以看到它有什么问题:
>>> r = requests.put("http://www.example.com", data="value=\"Test Message\"")
>>> r.request
<PreparedRequest [PUT]>
>>> r.request.url
'http://www.example.com/'
>>> r.request.body
'value="Test Message"'
>>> r.request.headers
{'User-Agent': 'python-requests/2.18.4', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Length': '20'}
其次,我认为你应该使用r = requests.put('http://127.0.0.1:2379/v2/keys/message', data={"value": "Test Message"})