我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

python也是可以用于httpserver的,其中比较简单的方式就是flask。如果对应到nodejs上的话,对标的就是express框架。那么,作为www容器的最基本功能,就是响应get或者post请求,并且获得参数,这也是本文中要讨论的问题。

苏南大叔:python代码,微型框架flask如何响应请求?如何获取参数? - flask-reponse
python代码,微型框架flask如何响应请求?如何获取参数?(图4-1)

大家好,这里是苏南大叔的程序如此灵动博客,这里记录苏南大叔和计算机代码的故事。本文描述pythonflask微型框架。测试环境:win10python@3.6.8flask@2.0.3

安装flask

Flask是一个用Python编写的Web应用程序框架,Flask基于Werkzeug WSGI工具包和Jinja2模板引擎。flask英文翻译为一种长颈烧瓶,官方logo看起来像个辣椒。

Flask也被称为“microframework” ,因为它使用简单的核心,用extension增加其他功能。Flask没有默认使用的数据库、窗体验证工具。

官方网站是:

苏南大叔:python代码,微型框架flask如何响应请求?如何获取参数? - flask-logo
python代码,微型框架flask如何响应请求?如何获取参数?(图4-2)

安装方式是:

pip install flask

启动进程

使用flask框架的时候,最应该注意的地方,就是不能把文件命名为flask.py。这样的话,就会出现模块空间的引用错误。报错类似如下:

AttributeError: module 'flask' has no attribute 'Flask'

基本测试代码:

import flask
api = flask.Flask(__name__)
print(flask.__version__)

@api.route('/', methods=['get'])
def index():
    return "OK"

if __name__ == '__main__':
    api.run(port=8888, debug=True, host='127.0.0.1')

苏南大叔:python代码,微型框架flask如何响应请求?如何获取参数? - flask-code
python代码,微型框架flask如何响应请求?如何获取参数?(图4-3)

响应get请求

测试代码:

@api.route('/_get', methods=['get'])
def send_get():
    id = int(flask.request.args.get('id'))
    cookie = flask.request.headers.get("Cookie")
    _json = {'msg': 'get用户id为' + str(id), 'header': cookie}
    return json.dumps(_json, ensure_ascii=False)

访问方式:

苏南大叔:python代码,微型框架flask如何响应请求?如何获取参数? - flask-post-get
python代码,微型框架flask如何响应请求?如何获取参数?(图4-4)

响应post请求

测试代码:

@api.route('/_post', methods=['post'])
def send_post():
    id = int(flask.request.form.get('id'))
    user_agent = flask.request.headers.get("User-Agent")
    _json = {'msg': 'post用户id为' + str(id), 'header': user_agent}
    return json.dumps(_json, ensure_ascii=False)

表格对比

postget的区别:

method装饰器获取参数方式
GETmethods=['get']flask.request.args.get()
POSTmethods=['post']flask.request.form.get()

获得header的方式:

header语句
UAflask.request.headers.get("User-Agent")
Cookieflask.request.headers.get("Cookie")

相关文档

因为本文的响应结果是json,所以使用json.dumps()输出了响应结果。涉及到中文文本输出的时候,需要设置特殊参数。具体可以参考文章:

如果想把这些flask代码包装成docker文件的话,可以参考下面的链接:

如果想看看nodejsexpress框架,如何实现类似的需求的话,请点击:

综述

本文主要描述python下的微型web框架flask,主要聚焦于响应最简单的post或者get请求。更多高级的flask经验文章,请点击下面的链接:

助理微信

微信打赏码

微信公众号

微信小程序

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python    json