无法在内部服务器上运行烧瓶请求

时间:2015-01-04 00:34:11

标签: python flask python-requests

上运行服务器
> http://127.0.0.1:5000/

并尝试发布请求(实际代码有点复杂,但这是我无法工作的部分)。基本上,尝试获得类似以下内容的工作,但这会返回并且错误表明找不到它。

r = requests.post('http://127.0.0.1:5000/api/user')

我也尝试了类似下面的内容,但它返回:

url = url_for('api.userlistapi')
payload = {'email':email, 'password':password,'profile_verified':False}
r = requests.post(url)

self.prepare_url(url, params)
File "....appp/flask/lib/python2.7/site-packages/requests/models.py", line 360, in prepare_url
"Perhaps you meant http://{0}?".format(url))
MissingSchema: Invalid URL u'/api/user': No schema supplied. Perhaps you meant http:///api/user?

任何帮助将不胜感激!它可能只是路由愚蠢或者应该以不同的方式完成帖子请求?我也使用角度和那些请求到同一个域工作。

1 个答案:

答案 0 :(得分:1)

使用您测试的第二个解决方案,您在正确的轨道上。

您只需将_external=True添加到url_for个参数:

url = url_for('api.userlistapi', _external=True)
payload = {'email':email, 'password':password,'profile_verified':False}
r = requests.post(url)

这样,Flask就可以构建一个包含域名的完整url。否则,url_for只会构建一个从您的域中调用的相对url

-

另外,作为旁注,您可以通过以下方式直接使用requests传递参数:

r = requests.post(url, params=payload)

但这取决于你的代码中其他代码的其他因素,基于你想要做的事情。