随着微服务架构的兴起,Flask以其简单、轻量级、便捷的特性,也随之越来越流行。下面我们就来看看Flask的简洁架构:通过app配置发布服务,通过路由定位url到指定的api,每一个api几乎都是独立工作
- from flask import Flask
-
- # 创建app对象
- app = Flask(__name__)
-
- # 添加配置
- app.debug = True
-
- # 通过装饰器指定路由
- @app.route('/home')
- def home():
- # 函数提供api接口的功能实现
- return 'hello will'
-
-
- # 运行flask 服务
- app.run()
那么接下来我们就深入学习一下flask的每一部分
首先要清楚,flask配置分为两类,一是静态配置,二是动态配置。
静态配置是指,在创建app对象的时候就需要添加的配置。如果创建后动态配置,就不会生效。
在flask的源码里,创建对象时可以指定如下配置
配置说明
import_name | str | 项目运行入口 |
static_url_path | str | 前端访问资源文件的前缀目录 |
static_folder | str="static" | 静态文件在文件夹的目录里 |
template_folder | str="templates" | 静态模板文件存放的根路径 |
创建app对象后,启动服务之前,你可以随时添加并且会生效的配置,我们称为动态配置。
- # 使用对象配置参数
- class Config(object):
- # 调试模式
- DEBUG = True
- # 自定义配置
- ITCAST = 'python'
- # 开发环境
- ENV = 'develop'
- # 测试模式
- TESTING = True
-
- # UPLOAD_FOLDER = 'static/uploads/' # 上传目录
- # MAX_CONTENT_LENGTH = 100 * 1024 * 1024 # 上传大小限制
配置示例:
- # 静态配置
- static_conf = {
- 'template_folder':'templates',
- 'static_folder':'templates/static',
- }
-
- # 使用对象配置参数
- class Config(object):
- # 调试模式
- DEBUG = True
- # 自定义配置
- ITCAST = 'python'
- # 开发环境
- ENV = 'develop'
- # 测试模式
- TESTING = True
-
- # UPLOAD_FOLDER = 'static/uploads/' # 上传目录
- # MAX_CONTENT_LENGTH = 100 * 1024 * 1024 # 上传大小限制
-
-
- app = Flask(__name__,**static_conf)
- app.config.from_object(Config)
Flask api接口开发包含两个部分:其一,接口地址也就是路由配置;其二,接口实现
接口地址,我们一般通过装饰来实现路由配置。包含访问路径,和请求方法两个部分。接口地址的组成为:http://ip:port/path。其中path就是路由里面配置的接口路径。
api接口,则是通过函数来实现。参数,可以通过request对象获得;返回值则是函数的返回值。
- @app.route('/test', methods=['GET'])
- def test():
- """['GET']"""
- return {'code': 0, 'msg': '请求成功'}
-
-
- @app.route('/test1', methods=['GET', 'POST'])
- def test1():
- """['GET']"""
- # 获取get传参
- print(request.args)
- return {'code': 0, 'msg': '请求成功', 'data': dict(request.args)}
-
-
- @app.route('/post1', methods=['POST'])
- def post1():
- """['POST']"""
- # 获取post的url-form-encoded传参
- print(request.form)
- return {'code': 0, 'msg': '请求成功', 'data': dict(request.form)}
-
-
- @app.route('/post2', methods=['POST'])
- def post2():
- """['POST']"""
- # 获取post的json传参
- print(request.json)
- return {'code': 0, 'msg': '请求成功', 'data': dict(request.json)}
接口调用示例:
很多年前就已经基本普及前后端分离的架构,在微服务领域,前后端分离几乎已经是必然。所以任何web类架构,都会涉及静态网页发布。当然,会Nginx的同学,这一部分可以用Nginx直接发布更为简单。
flask发布静态网页也非常简单,其架构为:使用template发布网站首页,网站使用到的静态内容,则通过静态文件配置。也就是静态配置里面,static_folder与template_folder的组合使用。
首先,添加静态网页源码
然后,在Flask静态配置里面添加两个路径配置
- # 静态配置
- static_conf = {
- 'template_folder':'templates',
- 'static_folder':'templates/static',
- }
最后,添加一个发布首页的模板路由
- # 静态网页
- @app.route('/')
- def index():
- return render_template('index.html')
当我们访问根路径,就可以打开已经写好的网站
到这里,你基本上就可以使用flask,做你想要做的任何web开发啦!!!