Python Flask工具搭建web微服务

flask工具搭建web微服务

Flask是一个Python编写的Web 微框架,让咱们可使用Python语言快速实现一个网站或Web服务。
参考自Flask官方文档:https://flask.palletsprojects.com/en/0.12.x/
参考中文文档官方文档:https://dormousehole.readthedocs.io/en/latest/

1.安装flask

需要python 环境,这个自行安装

1
pip install flask

简单上手

最小的 Flask 应用以下flask_demo.py

1
2
3
4
5
6
7
8
9
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
return 'Hello World'

if __name__ == '__main__':
app.run()

代码解析:
一、首先咱们导入了 Flask 类。 该类的实例将会成为咱们的 WSGI 应用。 , WSGI作为一个规范,定义了Web服务器如何与Python应用程序进行交互,使得使用Python写的Web应用程序可以和Web服务器对接起来。
二、接着咱们建立一个该类的实例。第一个参数是应用模块或者包的名称。若是你使用 一个单一模块(就像本例),那么应当使用 name ,由于名称会根据这个 模块是按应用方式使用仍是做为一个模块导入而发生变化(多是 ‘main’ , 也多是实际导入的名称)。这个参数是必需的,这样 Flask 才能知道在哪里能够 找到模板和静态文件等东西
三、而后咱们使用 route() 装饰器来告诉 Flask 触发函数的 URL 。
四、函数名称被用于生成相关联的 URL 。函数最后返回须要在用户浏览器中显示的信息

运行结果:

1
2
3
4
5
6
* Serving Flask app "flask_demo" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

打开链接查看 访问:http://127.0.0.1:5000/

说明

1
app.route(rule, options)

rule 参数表示与该函数的URL绑定。
options 是要转发给基础Rule对象的参数列表。
在上面的示例中,’/ ‘ URL与hello_world()函数绑定。所以,当在浏览器中打开web服务器的主页时,将呈现该函数的输出。

Flask类的run()方法在本地开发服务器上运行应用程序。

1
app.run(host, port, debug, options)

全部参数都是可选的web

host:要监听的主机名。 默认为127.0.0.1(localhost)。设置为“0.0.0.0”以使服务器在外部可用
port :默认值为5000
debug:默认为False。 若是设置为True,则提供调试信息,能够自动重载代码并显示调试信息
options:要转发到底层的Werkzeug服务器。

注意,False 和True 首字母大写

默认状况下,Flask绑定IP为127.0.0.1,端口为5000。也能够经过下面的方式自定义

1
app.run(host='0.0.0.0', port=80, debug=True)

0.0.0.0表明电脑全部的IP。80是HTTP网站服务的默认端口。
什么是默认?好比,咱们访问网站http://www.example.com,实际上是访问的http://www.example.com:80,只不过:80能够省略不写。

Flask HTTP方法

Web 应用使用不一样的 HTTP 方法处理 URL 。当你使用 Flask 时,应当熟悉 HTTP 方法。 缺省状况下,一个路由只回应 GET 请求。 可使用 route() 装饰器的 methods 参数来处理不一样的 HTTP 方法:

方法 描述
GET 以未加密的形式将数据发送到服务器,最多见的方法。
HEAD 和GET方法相同,但没有响应体。
POST 用于将HTML表单数据发送到服务器,POST方法接收的数据不禁服务器缓存。
PUT 用上传的内容替换目标资源的全部当前表示。
DELETE 删除由URL给出的目标资源的全部当前表示。
默认状况下,Flask路由响应GET请求。可是,能够经过为route()装饰器提供方法参数来更改此首选项。

为了演示在URL路由中使用POST方法,首先让咱们建立一个HTML表单,并使用POST方法将表单数据发送到URL。
将如下脚本另存为login.html

1
2
3
4
5
6
7
8
9
10
11
<html>
<body>

<form action = "http://localhost:5000/login" method = "post">
<p>Enter Name:</p>
<p><input type = "text" name = "nm" /></p>
<p><input type = "submit" value = "submit" /></p>
</form>

</body>
</html>

运行如下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from flask import Flask, redirect, url_for, request
app = Flask(__name__)

@app.route('/success/<name>')
def success(name):
return 'welcome %s' % name

@app.route('/login',methods = ['POST', 'GET'])
def login():
if request.method == 'POST':
user = request.form['nm']
return redirect(url_for('success',name = user))
else:
user = request.args.get('nm')
return redirect(url_for('success',name = user))

if __name__ == '__main__':
app.run(debug = True)

在浏览器中打开login.html,在文本字段中输入name,而后单击提交。
在这里插入图片描述
表单数据将POST到表单标签的action子句中的URL。

http://localhost/login映射到login()函数。因为服务器经过POST方法接收数据,所以经过如下步骤得到从表单数据得到的“nm”参数的值:
表单数据将POST到表单标签的action子句中的URL。

1
user = request.form['nm']

它做为变量部分传递给’/ success’ URL。浏览器在窗口中显示welcome消息。
在这里插入图片描述
在login.html中将方法参数更改成’GET’,而后在浏览器中再次打开它。服务器上接收的数据是经过GET方法得到的。经过如下的步骤得到’nm’参数的值:

1
User = request.args.get('nm')

这里,args是包含表单参数对及其对应值对的列表的字典对象。与’nm’参数对应的值将像以前同样传递到’/ success’ URL。

若是通过json 的方式获取数据,则直接使用data1 = request.get_data() 获取字符传,然后使用json.loads(data2)进行转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from flask import Flask, jsonify, request, abort
import json
@app.route('/ana', methods=['GET', 'POST'])
def call_analysis():
print("Hello, World!")

data1 = request.data #----获取的是字符串
#print(data1)
data2 = request.get_data() #----获取的是字符串
#print(data2)
j_data = json.loads(data2) #-----load将字符串解析成json
# print(j_data)
# print(j_data['base64'])

# return jsonify(j_data)

一辈子很短,努力的做好两件事就好;
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;

继开 wechat
欢迎加我的微信,共同交流技术