我在Django中有一个微服务,它通过POST请求获取邮政编码并返回附近邮政编码的列表。
我知道这项服务有效,因为我可以卷曲它
curl http://172.17.0.6:80/zipcode/ -d "postalcode=97201"
返回
{"postalcodes": ["97201", "97239", "97205", "97204", "97228", "97238", "97207", "97269", "97268", "97240", "97250", "97242"]}
我正在尝试编写一个脚本,它将成为我的其他微服务如何与此服务进行通信的基础,问题是脚本返回500错误而且我无法确定我做错了什么。
python脚本:
import requests
def calculate_postalcodes(postalcode):
url="http://172.17.0.6:80/zipcode/"
params ={'postalcode':postalcode}
data = requests.post(url=url, params=params)
# output = data.json()
# zipcodes = output['postalcodes']
return data.text
postalcodess = calculate_postalcodes('97201')
print postalcodess
django logs
mypostalcode = request.POST['postalcode']
File "/usr/local/lib/python2.7/dist-packages/django/utils/datastructures.py", line 85, in __getitem__
raise MultiValueDictKeyError(repr(key))
MultiValueDictKeyError: "'postalcode'"
因为我们知道该服务适用于卷曲请求,所以我选择不包含代码片段。我基本上只是试图通过POST请求传递一个邮政编码,方式与我的CURL请求相同。
答案 0 :(得分:0)
从
切换data = requests.post(url=url, params=params)
到
data = requests.post(url=url, data=params)
解决了这个问题。我的网络服务器不允许通过URL传递参数,这是params的作用(而数据通过http请求传递)