非常快速的问题。使用请求发送 PUT 时,我发送以下内容:
payload = {"host": "tst123:3306"}
r = requests.put(url, data=payload)
请求似乎正在格式化主机字符串,因此 api 正在接收 'tst123%3A3306'
有没有办法防止这种情况?
任何想法都非常感谢
C
非常快速的问题。使用请求发送 PUT 时,我发送以下内容:
payload = {"host": "tst123:3306"}
r = requests.put(url, data=payload)
请求似乎正在格式化主机字符串,因此 api 正在接收 'tst123%3A3306'
有没有办法防止这种情况?
任何想法都非常感谢
C
你看到的是一个完美的行为。参数必须根据架构进行编码
http://en.wikipedia.org/wiki/URL-Encoding
这是自网络早期以来众所周知的最佳实践。
在应用程序方面,您必须自己解码参数。每种编程语言都有相应的模块。在大多数情况下,所有网络框架都应该在内部进行解码。
在这种情况下,它不是参数,而是 PUT 数据。我通过使用解决了这个问题
payload = json.dumps({"host": "tst123:3306"})
headers = {'content-type': 'application/json'}
r = requests.put(url, data=payload, headers=headers)
我可以理解为什么需要对 url 参数进行编码,但为什么要对 PUT 数据进行编码?