UtilMeta 是一个面向服务端应用的渐进式 Python 后端元框架,基于 Python 类型注解标准高效构建声明式 API 与 ORM,支持使用主流 Python 框架作为运行时实现或渐进式整合
pip install -U utilmeta
UtilMeta 需要 Python >= 3.8
你可以使用 UtilMeta 框架的声明式 API 与 ORM 语法轻松构建 RESTful API, 下面是一个来自 mini_blog/blog/api.py 的示例
from utilmeta.core import api, orm
from .models import User, Article
from django.db import models
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
到 ArticleAPI,API 会返回类似如下的响应
{
"id": 1,
"author": {
"username": "alice",
"articles_num": 3
},
"content": "hello world"
}
可以看到它与你在代码中的声明完全一致,UtilMeta 会自动生成优化后的 ORM 查询,并将结果转化为你定义的类型与结构,自动避免 N+1 查询问题,并且会根据你的声明生成对应的 OpenAPI 文档
UtilMeta 内置了一套标准支持大部分主流 Python 框架作为 HTTP 运行时实现,灵活兼容多种技术栈,支持异步接口
当前支持的框架包括
你可以仅用一个参数切换 API 服务的整个底层实现,比如下面的 hello world 示例代码
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()
你可以创建一个 Python 文件写入并运行以上代码试试看
你可以通过 clone 仓库并运行其中的示例项目来快速开始
pip install -U utilmeta
git clone https://github.com/utilmeta/utilmeta-py
cd utilmeta-py/examples/mini_blog
meta migrate # 生成数据库
meta run # 或 python server.py
当看到如下提示即说明启动成功
| UtilMeta (version) starting service [blog]
| version: 0.1.0
| stage: ● debug
| backend: fastapi (version) | asynchronous
| base url: http://127.0.0.1:8080
当我们启动项目时,我们会看到以下的输出
UtilMeta OperationsAPI loaded at http://127.0.0.1:8080/ops, connect your APIs at https://ops.utilmeta.com
说明项目的运维管理 API 成功加载,我们可以直接点击这个连接: https://ops.utilmeta.com/localhost?local_node=http://127.0.0.1:8080/ops 连接到你的 API 服务
点击左侧 API 板块即可看到生成的 API 文档
本地 API 在连接平台后可以使用以下功能
user
与 article
实例使用其他的功能需要连接有公开访问地址的 API 服务
我们设计了几个由易到难的入门案例由浅入深地涵盖了大部分框架的用法,你可以按照下面的顺序阅读与学习
如果你更希望从具体功能或用法入手学习,则可以参考
如果你已经开发好了 UtilMeta 项目,希望了解如何配置,部署与运维管理你的 API 服务,可以参考
添加作者微信 (voidZXL) 加入开发者群,验证信息 UtilMeta
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。