首页 > Python资料 博客日记
UtilMeta - 简洁高效的 Python 后端元框架
2024-02-24 16:55:18Python资料围观194次
最近开源了我开发多年的一个 Python 后端框架:UtilMeta
项目介绍
UtilMeta 是一个用于开发 API 服务的后端元框架,基于 Python 类型注解标准高效构建声明式接口与 ORM 查询,能够自动解析请求参数与生成 OpenAPI 文档,高效开发 RESTful 接口,产出的代码简洁清晰,并且支持使用主流 Python 框架(如 Django, Flask, FastAPI, Starlette, Sanic, Tornado 等)作为运行时实现或渐进式整合
安装
pip install utilmeta
核心特性
声明式接口开发
使用 UtilMeta 框架提供的声明能力,你可以轻松开发自动校验请求与生成 OpenAPI 文档的接口,也可以编写简洁的声明式 ORM 查询(支持关系对象查询且自动避免 N + 1 问题)
下面的例子是基于 Django 模型开发一个简洁的文章查询接口
from utilmeta.core import api, orm
from django.db import models
class User(models.Model):
username = models.CharField(max_length=20, unique=True)
class Article(models.Model):
author = models.ForeignKey(User, related_name="articles", on_delete=models.CASCADE)
content = models.TextField()
class UserSchema(orm.Schema[User]):
username: str
articles_num: int = models.Count('articles')
class ArticleSchema(orm.Schema[Article]):
id: int
author: UserSchema
content: str
class ArticleAPI(api.API):
async def get(self, id: int) -> ArticleSchema:
return await ArticleSchema.ainit(id)
如果请求 GET /article?id=1
,则会得到类似如下的结果
{
"id": 1,
"author": {
"username": "alice",
"articles_num": 3
},
"content": "hello world"
}
完全符合你的模式声明,并且会自动生成对应的 OpenAPI 文档,如
简洁的声明式开发可以显著降低接口开发的代码量,比如 UtilMeta 仅用 600 行代码就实现了 Realworld 博客后端, 与其他框架的对比如下
渐进式元框架
使用一套标准支持主流 Python 框架作为 HTTP 运行时实现,切换运行时实现只需要一个参数
from utilmeta import UtilMeta
from utilmeta.core import api
import django
class RootAPI(api.API):
@api.get
def hello(self):
return 'world'
service = UtilMeta(
__name__,
name='demo',
backend=django, # or flask / starlette / tornado / sanic
api=RootAPI,
route='/api'
)
app = service.application() # wsgi app
if __name__ == '__main__':
service.run()
并且支持以接口为粒度渐进式接入现有项目,比如 Flask
from flask import Flask
from utilmeta.core import api, response
app = Flask(__name__)
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
class CalcAPI(api.API):
@api.get
def add(self, a: int, b: int) -> int:
return a + b
CalcAPI.__as__(app, route='/calc')
高度可扩展与丰富的插件
内置一系列开箱即用的鉴权(Session / JWT),跨域处理,重试,请求控制,事务等插件
全周期监控运维解决方案
UtilMeta 框架配套了一个全周期的 API 管理平台,可以一站式解决中小团队的接口文档调试,日志查询,服务器监控,报警通知与事件管理等运维与管理需求(目前处于 Beta waitlist)
快速开始
你可以从下面几个由易到难的入门案例开始上手 UtilMeta 框架
如果你更希望从具体功能或用法入手学习,则可以参考
- 处理请求参数:如何处理路径参数,查询参数,请求体和请求头,以及如何处理文件上传
- API 类与接口路由:如何使用 API 类挂载简洁地定义树状接口路由,以及利用钩子等特性方便地在接口间复用代码,处理错误,模板化响应
- 数据查询与 ORM 操作:如何使用 Schema 声明式地编写 RESTful 接口所需要的增删改查和 ORM 操作
- 接口与用户鉴权:如何使用 Session, JWT, OAuth 等方式为接口的请求鉴权,获取当前请求用户与简化登录操作
- 配置运行与部署:如何使用声明式环境变量等特性配置服务的运行设置,启动与部署
- 从现有项目迁移:如何从现有的后端项目中渐进式地接入 UtilMeta 接口或迁移到 UtilMeta
社区
如果你觉得这个项目不错,可以帮我们的 Github 仓库 点个 ⭐~
你也可以加入我们社区获取项目的最新进展或参与讨论
或扫码添加 UtilMeta 框架作者的微信加入开发者微信群
标签:
上一篇:基于Python的地图绘制教程
下一篇:24 - 格式化字符串
相关文章
最新发布
- 光流法结合深度学习神经网络的原理及应用(完整代码都有Python opencv)
- Python 图像处理进阶:特征提取与图像分类
- 大数据可视化分析-基于python的电影数据分析及可视化系统_9532dr50
- 【Python】入门(运算、输出、数据类型)
- 【Python】第一弹---解锁编程新世界:深入理解计算机基础与Python入门指南
- 华为OD机试E卷 --第k个排列 --24年OD统一考试(Java & JS & Python & C & C++)
- Python已安装包在import时报错未找到的解决方法
- 【Python】自动化神器PyAutoGUI —告别手动操作,一键模拟鼠标键盘,玩转微信及各种软件自动化
- Pycharm连接SQL Sever(详细教程)
- Python编程练习题及解析(49题)
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程