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

时间:2021-07-29 16:07:07

标签: python php http-post

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

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

如上所示的简化接收值。在应用程序中,我使用 url,脚本保存在服务器上。

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

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

1 个答案:

答案 0 :(得分:1)

在 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 运行了 nginx/PHP,那么这就会出现问题。

您不能在同一个端口 80 上运行两台服务器。它需要用 Apache 运行所有。

PHP 是为网页创建的,Apache 预装了模块来运行 PHP(并运行像 Laravel 这样的 PHP 框架),但通常它没有模块Python。它可能会安装模块来运行 Python 或其他模块来运行 CGI 或 FastCGI(这意味着任何可执行脚本 - Python、Perl、Bash,甚至编译的 C/C++),但这是一种非常古老的方法,需要 Python 中的不同模块 - 所以宁可它不能运行 Flask - 可能没有人使用它。 Flask, Django, Bottle 编写代码更简单,具有许多内置函数,并且代码更清晰、组织得更好 - 就像在 PHP 框架中一样。

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


PHP 中,您可以将所有内容混合到一个文件中 - 代码、HTML、SQL - 这样它就可以搞得一团糟,人们创建了 Laravel 之类的框架,使其更清晰、更有条理。在 Python 中,您使用的是初始框架,因此您必须将 Flask 与 PHP 框架进行比较,但不能与纯 PHP 进行比较。

相关问题