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(但有时无法正确转换)