Skip to content
/ flast Public

这是一个基于Flask构建的超轻量级脚手架,强调配置大于编码的哲学。

License

Notifications You must be signed in to change notification settings

aqz236/flast

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Flast

这是一个基于 Flask 构建的超轻量级,用于构建 Web 应用程序的 Python 脚手架,封装灵感来自Spring的配置文件,强调配置大于编码的哲学。 整个脚手架大小仅26KB,通过配置config.yaml文件以生成路由,只需简单地配置,配合内置的代码生成器,自动化生成业务代码、自动注册路由。

Vue logo

Python Package Index Python Version License MIT Chat

特性

  • 极度轻量:整个脚手架仅有26KB
  • 配置大于编码:只需简单配置config.yaml,即可生成业务代码
  • 封装有链式返回值:方便链式操作
  • 异常处理:内置异常处理机制
  • 专用的代码生成器:自动化生成业务代码

如何开始

  1. 克隆本项目至本地。
git clone https://github.com/aqz236/flast
  1. 切换到项目文件夹
cd flast
  1. 安装依赖
pip install -r requirements.txt
  1. 修改config.yaml至你需要的路由设置
  2. 手动运行utils/generator.py,根据配置生成业务代码

配置说明

config.yaml主要配置项目路由和一些其他信息。下面是一个示例,供理解参考。

flask:
  host: 0.0.0.0          # 运行Flask服务的主机地址,0.0.0.0代表监听所有公开的IP地址
  port: 5222             # 运行Flask服务的端口号
  base_api: /song         # API的基础路径,所有蓝图的路由都将以此路径作为前缀
  blueprints:
    搜索类:
      关键词搜索:
        module: api.search_keyword
        class: SearchKeyword
        routes:
          /search_by_keyword/<string:keyword>:
            - endpoint: search_by_keyword
              methods:
                - GET
                - POST
      ID搜索:
        module: api.search_id
        class: SearchID
        routes:
          /search_by_id/<string:id>:
            - endpoint: search_by_id
              methods:
                - GET
                - POST

较为完整注释的配置文件如下

flask:
  host: 0.0.0.0          # 运行Flask服务的主机地址,0.0.0.0代表监听所有公开的IP地址
  port: 5222             # 运行Flask服务的端口号
  baseApi: /song         # API的基础路径,所有蓝图的路由都将以此路径作为前缀

  # `blueprints`节定义了多个蓝图,用于组织不同的路由群组
  blueprints:
    # 自定义蓝图名称
    example_name:
      # 在此下定义test1蓝图相关的类与路由信息
      TestManager:               # TestManager为这部分配置的索引名,是蓝图中的一个组件
        module: api.test1        # 定义TestManager类所在的模块路径,'.' 表示层级关系
        class: Test1Manager      # 定义TestManager类的类名
        routes:                  # 定义该类关联的路由和方法
          # 定义一个路由地址以及支持的方法
          /test:
            - endpoint: create_task    # 定义endpoint名称,同蓝图下不允许重名
              methods:                # 列出支处理的HTTP方法
                - POST
          # 定义带参数的路由,参数由尖括号<>包围
          # `/song/test/<obj>/<name>`请求时将解析参数至对应的处理函数
          /test/<int:obj>/<string:name>:
            - endpoint: get_task_info
              methods:              # 列出支持的方法
                - GET
                - DELETE
                - PUT
          # 类似的,还可以定义其他路由和处理函数关联
          /test/<int:obj>/<string:action>:
            - endpoint: task_action
              methods:
                - GET

    # test2 蓝图定义开始
    test2:
      TestManager:                    # TestManager为这部分配置的索引名
        module: api.test2             # 定义TestManager类所在的模块路径
        class: Test2Manager           # 定义TestManager类的类名
        routes:                       # 定义该类关联的路由和方法
          /test2:
            - endpoint: create_task
              methods:                # 列出支处理的HTTP方法,支持多种方法
                - POST
                - GET
                - PUT
                - DELETE
                - PATCH
                - HEAD
                - OPTIONS

License

MIT

Copyright (c) 2024-present, aqz236

About

这是一个基于Flask构建的超轻量级脚手架,强调配置大于编码的哲学。

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages