优秀的编程知识分享平台

网站首页 > 技术文章 正文

快速入门Flask微服务架构(微服务tsf框架)

nanyue 2024-10-15 11:34:04 技术文章 5 ℃

Flask架构

随着微服务架构的兴起,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配置详解

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

2.1 静态配置

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

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

配置说明

import_name

str

项目运行入口

static_url_path

str

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

static_folder

str="static"

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

template_folder

str="templates"

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

2.2 动态配置

创建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接口开发

3.1 api接口开发

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)}

接口调用示例:


3.2 发布静态网页

很多年前就已经基本普及前后端分离的架构,在微服务领域,前后端分离几乎已经是必然。所以任何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开发啦!!!

最近发表
标签列表