有没有一种简单的方法可以像 php 一样在 python 中接收 Http POST 请求?

Is there an easy way to receive Http POST request in python, like in php?

我正在实现一个简单的 Android 应用程序,它需要将数据发送到网络服务器。我目前使用 HttpUrlConnection 通过 POST 请求将数据发送到服务器上的 php 脚本。

$value1 = $_POST["value1"];
$value2 = $_POST["value2"];

这些值的接收方式与上面所示的简化方式相同。在应用程序中,我使用 url,其中脚本保存在服务器上。

是否也有一种简单的方法可以用 python 完成此操作?还是只有一些更复杂的解决方案?

我只能找到多种使用 python 发送请求或在网络服务器内交换数据的方法。但是我的项目没有任何效果。

在 Python 中,获得 POST 的更简单方法是使用 Flask 和 运行 内置服务器。

script.py

from flask import Flask, request

app = Flask(__name__)

@app.route('/', methods=['POST', 'GET'])
def index():
   if request.method == 'POST':
      value1 = request.form.get('value1')
      value2 = request.form.get('value2')
      return 'OK'
   else:
      return 'Use POST requests'

if __name__ == '__main__':
    #app.debug = True
    app.run(host='0.0.0.0', port=8000)

和运行作为

python script.py

它会 运行 服务器在端口 8000 上,所以你可以连接 http://myserver:8000/


但是如果你已经 运行 Apache/nginxPHP 那么这就有问题了。

您不能 运行 同一端口 80 上的两个服务器。它需要 运行 和 Apache

PHP 是为网页创建的,Apache 已将模块预安装到 运行 PHP(以及 运行 PHP 框架,例如Laravel) 但通常它没有 Python 的模块。它可以将模块安装到 运行 Python 或将其他模块安装到 运行 CGI 或 FastCGI(这意味着任何可执行脚本 - Python、Perl、Bash,甚至已编译 C/C++) 但这是非常古老的方法,需要 Python 中的不同模块 - 所以它不能 运行 Flask - 可能没有人使用它。 FlaskDjangoBottle 更易于编写代码,具有许多内置函数,并且代码更清晰、更有条理——就像在 PHP 框架中一样。

Flask 和其他 Python 网络框架(如 DjangoBottle)被创建到 运行 与 WSGI 服务器如 Gunicorn .他们最终仅将 Apache 用作 proxy-server 并提供图像等静态文件,CSS。因此,要在外部服务器上使用 Flask/Django,您必须找到为 FlaskDjango 等配置的服务器,例如 PythonAnywhere


PHP 中,您可以将所有内容混合在一个文件中 - 代码,HTML,SQL - 所以它会造成很大的混乱,人们创建了 Laravel 这样的框架来使它更干净,更有条理。在 Python 中,您使用 at start 框架,因此您必须将 Flask 与 PHP 框架进行比较,但不能与纯 PHP.

进行比较