砍材农夫砍材农夫
  • 微信记账小程序
  • java
  • redis
  • mysql
  • 场景类
  • 框架类
  • vuepress搭建
  • hexo搭建
  • 云图
  • llm wiki

    • 基于karpathy
    • gradle
  • 常用工具

    • git
    • gradle
    • Zadig
    • it-tools
    • 开源推荐
    • curl
  • 大前端

    • nodejs
    • npm
    • webpack
    • 微信
    • 正则
    • uniapp
    • app
  • java

    • java基础
    • jdk体系
    • jvm
    • spring
    • spring_cloud
    • spring_boot
    • 分库分表
    • zookeeper
  • python

    • python基础
    • python高级
    • python框架
  • 算法

    • 算法
  • 网关

    • spring_cloud_gateway
    • openresty
  • 高可用

    • 秒杀
    • 分布式
    • 缓存一致
  • MQ

    • MQ
    • rabbitMQ
    • rocketMQ
    • kafka
  • 其它

    • 设计模式
    • 领域驱动(ddd)
  • 关系型数据库

    • mysql5.0
    • mysql8.0
  • 非关系型数据库

    • redis
    • mongoDB
  • 分布式/其他

    • ShardingSphere
    • 区块链
  • 向量数据库

    • M3E
    • OPEN AI
  • Jmeter
  • fiddler
  • wireshark
  • AI入门
  • AI大模型
  • AI插件
  • AI集成框架
  • 相关算法
  • AI训练师
  • 量化交易
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 相关运营
  • docker
  • k8s
  • devops
  • nginx
  • 元宇宙
  • 区块链
  • 物联网
  • linux
  • webrtc
  • web3.0
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 中考
  • 投资
  • 保险
  • 思
  • 微信记账小程序
  • java
  • redis
  • mysql
  • 场景类
  • 框架类
  • vuepress搭建
  • hexo搭建
  • 云图
  • llm wiki

    • 基于karpathy
    • gradle
  • 常用工具

    • git
    • gradle
    • Zadig
    • it-tools
    • 开源推荐
    • curl
  • 大前端

    • nodejs
    • npm
    • webpack
    • 微信
    • 正则
    • uniapp
    • app
  • java

    • java基础
    • jdk体系
    • jvm
    • spring
    • spring_cloud
    • spring_boot
    • 分库分表
    • zookeeper
  • python

    • python基础
    • python高级
    • python框架
  • 算法

    • 算法
  • 网关

    • spring_cloud_gateway
    • openresty
  • 高可用

    • 秒杀
    • 分布式
    • 缓存一致
  • MQ

    • MQ
    • rabbitMQ
    • rocketMQ
    • kafka
  • 其它

    • 设计模式
    • 领域驱动(ddd)
  • 关系型数据库

    • mysql5.0
    • mysql8.0
  • 非关系型数据库

    • redis
    • mongoDB
  • 分布式/其他

    • ShardingSphere
    • 区块链
  • 向量数据库

    • M3E
    • OPEN AI
  • Jmeter
  • fiddler
  • wireshark
  • AI入门
  • AI大模型
  • AI插件
  • AI集成框架
  • 相关算法
  • AI训练师
  • 量化交易
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 相关运营
  • docker
  • k8s
  • devops
  • nginx
  • 元宇宙
  • 区块链
  • 物联网
  • linux
  • webrtc
  • web3.0
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 中考
  • 投资
  • 保险
  • 思
  • 主流应用框架
  • Flask

    • flask demo搭建
    • flask 实现完整接口
    • flask 模板实现
    • flask 会话session实现
    • flask 认证验签
  • FastAPI

    • 依赖包安装
  • Django

    • 依赖包安装
  • python基于框架flask实现完整接口
    • flask入门
    • 涉及概念
      • init.py
      • blueprint
      • 为什么使用blueprint
      • 三步拆解blueprint构建
    • 项目demo
    • 部分代码说明
      • 统一入口:创建应用并启动服务器
      • 注册相关路径
      • 实现相关接口定义
    • 项目结构
    • 验证结果

python基于框架flask实现完整接口

flask入门

官网[https://flask.palletsprojects.com/zh-cn/stable/quickstart/]

涉及概念

init.py

部分归属
__init__.py 文件的含义和作用Python 语言默认
在 __init__.py 中导入子模块并定义为列表Python 常规代码写法
使用 blueprints = [...] 然后在 create_app 中循环注册Flask 应用层的使用方式(利用了 Python 的列表和循环)

所以,init.py 的这种用途是纯 Python 的,Flask 只是“消费”了你通过 Python 机制准备好的蓝图列表

blueprint

Blueprint 就是把一组相关的路由(接口)打包成一个“模块”,然后挂到 Flask 应用上

为什么使用blueprint

  • 不分模块

所有接口都写在 app.py 里,文件会变得又长又乱

  • 用 Blueprint

每个功能(比如 user、auth、blog)各自一个文件,然后在主程序里注册一下就行

三步拆解blueprint构建

  • 定义一个蓝图(比如 user.py)
from flask import Blueprint

bp = Blueprint('user', __name__, url_prefix='/api/user')

@bp.route('/profile')
def profile():
    return {"name": "Alice"}
  • 在主程序里注册它(比如 app/init.py)
from flask import Flask
from .api import user  # 导入上面那个文件

def create_app():
    app = Flask(__name__)
    app.register_blueprint(user.bp)  # 注册
    return app
  • 启动后访问:/api/user/profile 就能拿到数据

项目demo

python-flask[https://gitee.com/kcnf-python/python-flask]

部分代码说明

统一入口:创建应用并启动服务器

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
统一入口:创建应用并启动服务器
"""
from app import create_app

# 创建 Flask 应用实例(声明式注册所有蓝图)
app = create_app()

if __name__ == '__main__':
    # 获取主机和端口(可从环境变量读取,默认 0.0.0.0:5000)
    host = '0.0.0.0'
    port = 5000
    debug = app.config.get('DEBUG', False)
    app.run(host=host, port=port, debug=debug)

注册相关路径

from flask import Flask
from app.config import get_config
from app.api import blueprints  # 导入显式声明的蓝图列表

def create_app():
    app = Flask(__name__)
    config_obj = get_config()
    app.config.from_object(config_obj)

    # 声明式注册:循环注册 blueprints 列表中的每个蓝图
    for bp in blueprints:
        app.register_blueprint(bp)
        print(f"✓ Registered blueprint: {bp.name}")

    @app.route('/')
    def index():
        return {"message": f"Welcome to {app.config['API_TITLE']}"}

    return app

实现相关接口定义

from flask import Blueprint, jsonify, request

bp = Blueprint('user', __name__, url_prefix='/api/user')

# 模拟用户数据
users_db = {
    1: {"id": 1, "name": "Alice", "email": "alice@example.com"},
    2: {"id": 2, "name": "Bob", "email": "bob@example.com"},
}

@bp.route('', methods=['GET'])
def list_users():
    """获取所有用户"""
    return jsonify(list(users_db.values()))

@bp.route('/<int:user_id>', methods=['GET'])
def get_user(user_id):
    """获取单个用户"""
    user = users_db.get(user_id)
    if not user:
        return jsonify({"error": "User not found"}), 404
    return jsonify(user)

@bp.route('', methods=['POST'])
def create_user():
    """创建用户"""
    data = request.get_json()
    new_id = max(users_db.keys()) + 1 if users_db else 1
    user = {"id": new_id, "name": data.get("name"), "email": data.get("email")}
    users_db[new_id] = user
    return jsonify(user), 201

项目结构

img

验证结果

img

最近更新: 2026/5/6 09:33
Contributors: kcnf
Prev
flask demo搭建
Next
flask 模板实现