Flask:向开发服务器发出 POST 请求
Flask: make POST requests to development server
我可以 运行 在我的本地计算机上使用 flask run
命令行上的 Flask app/API。这将设置一个本地服务器(对我来说,在 http://127.0.0.1:5000/
),运行 该地址的应用程序。
完成此操作后,我只需在浏览器中访问 http://127.0.0.1:5000/<route>
即可向我的应用发出 GET 请求。 如何向应用程序发出 POST 请求? 我还有一些参数要包含在 POST 请求的正文中。
您无法在浏览器中使用 URL
发出请求 POST
。它需要 HTML
个页面,其中有
<form method="POST">
</form>
所以您的服务器会将此页面发送给您。
您可以使用 Python 模块(例如 urllib
或更简单的 requests
来代替浏览器,后者可以 运行 .get()
、.post(...)
等.
在示例中,我使用 https://httpbin.org/post,因为它会发回您收到的所有内容 - headers、post 数据、cookie 等,因此您可以看到您发送的内容。
import requests
#url = 'http://127.0.0.1:5000'
url = 'https://httpbin.org/post'
# POST/form data
payload = {
'search': 'hello world',
}
r = requests.post(url, data=payload)
print(r.text)
结果:
{
"args": {},
"data": "",
"files": {},
"form": {
"search": "hello world"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate, br",
"Content-Length": "18",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.26.0",
"X-Amzn-Trace-Id": "Root=1-61687ab9-7bae70cf5bfdcbb75524b71b"
},
"json": null,
"origin": "83.11.118.179",
"url": "https://httpbin.org/post"
}
有些人使用 GUI
工具,例如 postman 来测试页面 - 它也可以发送请求 POST/GET/DELETE/OPTION/etc。
您也可以尝试使用 curl
等控制台程序
curl https://httpbin.org/post -X POST -d "search=hello world"
{
"args": {},
"data": "",
"files": {},
"form": {
"search": "hello world"
},
"headers": {
"Accept": "*/*",
"Content-Length": "18",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "curl/7.68.0",
"X-Amzn-Trace-Id": "Root=1-61687da3-5eaaa4ff6419c36639a2cc5d"
},
"json": null,
"origin": "83.11.118.179",
"url": "https://httpbin.org/post"
}
顺便说一句:
一些API在文档中使用curl作为示例来说明如何使用API。
页面 https://curl.trillworks.com 可以从 curl
转换为 Python requests
(但有时无法正确转换)
我可以 运行 在我的本地计算机上使用 flask run
命令行上的 Flask app/API。这将设置一个本地服务器(对我来说,在 http://127.0.0.1:5000/
),运行 该地址的应用程序。
完成此操作后,我只需在浏览器中访问 http://127.0.0.1:5000/<route>
即可向我的应用发出 GET 请求。 如何向应用程序发出 POST 请求? 我还有一些参数要包含在 POST 请求的正文中。
您无法在浏览器中使用 URL
发出请求 POST
。它需要 HTML
个页面,其中有
<form method="POST">
</form>
所以您的服务器会将此页面发送给您。
您可以使用 Python 模块(例如 urllib
或更简单的 requests
来代替浏览器,后者可以 运行 .get()
、.post(...)
等.
在示例中,我使用 https://httpbin.org/post,因为它会发回您收到的所有内容 - headers、post 数据、cookie 等,因此您可以看到您发送的内容。
import requests
#url = 'http://127.0.0.1:5000'
url = 'https://httpbin.org/post'
# POST/form data
payload = {
'search': 'hello world',
}
r = requests.post(url, data=payload)
print(r.text)
结果:
{
"args": {},
"data": "",
"files": {},
"form": {
"search": "hello world"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate, br",
"Content-Length": "18",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.26.0",
"X-Amzn-Trace-Id": "Root=1-61687ab9-7bae70cf5bfdcbb75524b71b"
},
"json": null,
"origin": "83.11.118.179",
"url": "https://httpbin.org/post"
}
有些人使用 GUI
工具,例如 postman 来测试页面 - 它也可以发送请求 POST/GET/DELETE/OPTION/etc。
您也可以尝试使用 curl
等控制台程序curl https://httpbin.org/post -X POST -d "search=hello world"
{
"args": {},
"data": "",
"files": {},
"form": {
"search": "hello world"
},
"headers": {
"Accept": "*/*",
"Content-Length": "18",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "curl/7.68.0",
"X-Amzn-Trace-Id": "Root=1-61687da3-5eaaa4ff6419c36639a2cc5d"
},
"json": null,
"origin": "83.11.118.179",
"url": "https://httpbin.org/post"
}
顺便说一句:
一些API在文档中使用curl作为示例来说明如何使用API。
页面 https://curl.trillworks.com 可以从 curl
转换为 Python requests
(但有时无法正确转换)