• 快速入门Flask微服务架构


    Flask架构

    随着微服务架构的兴起,Flask以其简单、轻量级、便捷的特性,也随之越来越流行。下面我们就来看看Flask的简洁架构:通过app配置发布服务,通过路由定位url到指定的api,每一个api几乎都是独立工作

    1. from flask import Flask
    2. # 创建app对象
    3. app = Flask(__name__)
    4. # 添加配置
    5. app.debug = True
    6. # 通过装饰器指定路由
    7. @app.route('/home')
    8. def home():
    9. # 函数提供api接口的功能实现
    10. return 'hello will'
    11. # 运行flask 服务
    12. app.run()

    那么接下来我们就深入学习一下flask的每一部分

    Flask配置详解

    首先要清楚,flask配置分为两类,一是静态配置,二是动态配置。

    2.1 静态配置

    静态配置是指,在创建app对象的时候就需要添加的配置。如果创建后动态配置,就不会生效。

    在flask的源码里,创建对象时可以指定如下配置

    配置说明

    import_name

    str

    项目运行入口

    static_url_path

    str

    前端访问资源文件的前缀目录

    static_folder

    str="static"

    静态文件在文件夹的目录里

    template_folder

    str="templates"

    静态模板文件存放的根路径

    2.2 动态配置

    创建app对象后,启动服务之前,你可以随时添加并且会生效的配置,我们称为动态配置。

    1. # 使用对象配置参数
    2. class Config(object):
    3. # 调试模式
    4. DEBUG = True
    5. # 自定义配置
    6. ITCAST = 'python'
    7. # 开发环境
    8. ENV = 'develop'
    9. # 测试模式
    10. TESTING = True
    11. # UPLOAD_FOLDER = 'static/uploads/' # 上传目录
    12. # MAX_CONTENT_LENGTH = 100 * 1024 * 1024 # 上传大小限制

    配置示例:

    1. # 静态配置
    2. static_conf = {
    3. 'template_folder':'templates',
    4. 'static_folder':'templates/static',
    5. }
    6. # 使用对象配置参数
    7. class Config(object):
    8. # 调试模式
    9. DEBUG = True
    10. # 自定义配置
    11. ITCAST = 'python'
    12. # 开发环境
    13. ENV = 'develop'
    14. # 测试模式
    15. TESTING = True
    16. # UPLOAD_FOLDER = 'static/uploads/' # 上传目录
    17. # MAX_CONTENT_LENGTH = 100 * 1024 * 1024 # 上传大小限制
    18. app = Flask(__name__,**static_conf)
    19. app.config.from_object(Config)

    Flask接口开发

    3.1 api接口开发

    Flask api接口开发包含两个部分:其一,接口地址也就是路由配置;其二,接口实现

    接口地址,我们一般通过装饰来实现路由配置。包含访问路径,和请求方法两个部分。接口地址的组成为:http://ip:port/path。其中path就是路由里面配置的接口路径。

    api接口,则是通过函数来实现。参数,可以通过request对象获得;返回值则是函数的返回值。

    1. @app.route('/test', methods=['GET'])
    2. def test():
    3. """['GET']"""
    4. return {'code': 0, 'msg': '请求成功'}
    5. @app.route('/test1', methods=['GET', 'POST'])
    6. def test1():
    7. """['GET']"""
    8. # 获取get传参
    9. print(request.args)
    10. return {'code': 0, 'msg': '请求成功', 'data': dict(request.args)}
    11. @app.route('/post1', methods=['POST'])
    12. def post1():
    13. """['POST']"""
    14. # 获取post的url-form-encoded传参
    15. print(request.form)
    16. return {'code': 0, 'msg': '请求成功', 'data': dict(request.form)}
    17. @app.route('/post2', methods=['POST'])
    18. def post2():
    19. """['POST']"""
    20. # 获取post的json传参
    21. print(request.json)
    22. return {'code': 0, 'msg': '请求成功', 'data': dict(request.json)}

    接口调用示例:

    3.2 发布静态网页

    很多年前就已经基本普及前后端分离的架构,在微服务领域,前后端分离几乎已经是必然。所以任何web类架构,都会涉及静态网页发布。当然,会Nginx的同学,这一部分可以用Nginx直接发布更为简单。

    flask发布静态网页也非常简单,其架构为:使用template发布网站首页,网站使用到的静态内容,则通过静态文件配置。也就是静态配置里面,static_folder与template_folder的组合使用。

    首先,添加静态网页源码

    然后,在Flask静态配置里面添加两个路径配置

    1. # 静态配置
    2. static_conf = {
    3. 'template_folder':'templates',
    4. 'static_folder':'templates/static',
    5. }

    最后,添加一个发布首页的模板路由

    1. # 静态网页
    2. @app.route('/')
    3. def index():
    4. return render_template('index.html')

    当我们访问根路径,就可以打开已经写好的网站

    到这里,你基本上就可以使用flask,做你想要做的任何web开发啦!!!

  • 相关阅读:
    最小二乘法,加权最小二乘法,迭代重加权最小二乘法
    HedgeDoc安装教程
    基于Jetty9的Geoserver配置https证书
    SAP PO运维(四):适配器消息监控
    SpringBoot上传文件夹
    网页被攻击要如何应对
    华为机试 - 比较两个版本号的大小
    玩转MySQL:多姿多彩的SQL
    使用ADS进行serdes仿真时,Tx_Diff中EQ的设置对发送端波形的影响。
    Mybatis plus无介绍快使用,MybatisPlus3.5版本设置批量插入附源码(十一)
  • 原文地址:https://blog.csdn.net/weixin_68548441/article/details/125430100