hikesoft python framework power by wantao
Project description
FastApi快速开发框架
本项目是基于fastapi为基础实现的开发框架。主要特点是简化代码量,内置ORM、Mongo、Cache等多种常见开发工具。结构简洁开包即用,框架自动扫描引入业务代码。
框架结构
app--------------------------------应用包
modules------------------------业务模块
base-----------------------业务聚合1
models.py--------------业务数据模型
routers.py-------------Rest api接口
service.py-------------业务逻辑
foo------------------------业务聚合2
foo2-----------------------业务聚合3
foo3-----------------------业务聚合4
assets-----------------------------应用资源
etc----------------------------应用配置
logs---------------------------应用日志
app.py-----------------------------启动程序
配置文件
配置环境区分
python app.py 环境(dev prod 其他环境)
每个环境会生成对应的配置文件
appinfo:
contact:
email: hnck2000@126.com
name: wantao
url: https://github.com/
description: "应用介绍"
summary: "应用简介"
title: "应用名称"
version: 0.0.1
cache:
enable: false
host: 127.0.0.1
password: ''
port: 6379
custom: {}#自定义配置
database:
enable: true
max_overflow: 10
pool_size: 5
pool_timeout: 30
url: mysql+aiomysql://root:root@127.0.0.1/test?charset=utf8mb4
mogodb:
enable: true
url: mongodb://admin:admin@127.0.0.1:27017
database: test
env: dev
ip: 127.0.0.1
port: 8081
通过引入config使用全局配置数据
from hikepy import config
Routers
Routers文件是当前业务集合的所有接口程序部分,接口定义完全使用fastapi规范和语法
接口启用权限验证
from hikepy import AuthInfo,HkAuth
async def read_users(authInfo:AuthInfo=Depends(HkAuth())):
通过引入HkAuth()依赖对该接口实现安全验证,请求此接口必须在Header中带有ticket=Token
生成token
from hikepy import AuthInfo,HkAuth,create_token
return create_token(AuthInfo(user_id="test"))
通过create_token创建AuthInfo对象创建token
Service
service.py是业务集合中所有的核心业务代码。
定义业务方法
from hikepy import service
@service
async def foo():
通过@service装饰器定义业务方法,框架会自动扫描带有@service的方法
使用SQL
from hikepy import service
from hikepy.tools import Sql
@service
async def foo(db:Sql=None):
通过在业务类方法上定义Sql类型提示来使用sql功能,框架会自动创建封装sql工具类,直接使用即可,例如:db.execute()
Sql工具类基于sqlalchemy封装,支持所有的sqlalchemy方法,封装了例如分页查询等方法db.page(select(TestModel))
关于事物嵌套,主方法调用子方法默认不开启事物嵌套,子方法会使用独立事物,如果要开启,在主方法调用子方法是需要给子方法传递db:Sql参数
使用Cache
from hikepy import service
from redis import Redis
@service
async def foo(cache:Redis=None):
通过在业务类方法上定义Redis类型提示来使用cache功能, Redis未做封装直接使用python的Redis客户端
使用MogoDB
from hikepy import service
from hikepy.tools import Mogo
@service
async def foo(mogo:Mogo=None):
通过在业务类方法上定义Mogo类型提示来使用mogo功能, mogo:Mogo是基于motor封装的mogo工具类,使用过程中采用异步模式
Models
models.py是业务集合中所有用到的数据模型对象,数据模型以pydantic为基础进行封装。
class HkBaseModel(BaseModel):
"""pydantic基础类"""
HkBaseModel是所有数据模型的基类,所有自定义模型应继承
class SqlModel(Base):
"""所有数据库模型都需要集成此类"""
# 定义为抽象类
__abstract__ = True
# 默认字段
id = Column(String(50),primary_key=True,comment="主角")
create_user = Column(String(50),nullable=True,comment="创建人")
create_time = Column(DATETIME,default=datetime.now, comment="创建时间")
update_user = Column(String(50),nullable=True, comment="更新人")
update_time = Column(DATETIME,default=datetime.now, comment="更新时间")
is_delete = Column(CHAR(1), default="N", comment="删除标识:0-正常 1-已删除")
SqlModel是所有ORM数据模型的基类,所有自定义模型应继承,定为数据表ORM模型时继承,已经内置了ID等属性,所有自定义类不在设置主键字段
class PageList(Generic[T],HkBaseModel):
"""分页查询返回结果封装类"""
分页查询对象封装类型,分页查询会返回此类型
class AuthInfo(HkBaseModel):
"""jwt用户信息"""
JWT的playload装载内容对象
class CommonModel(HkBaseModel):
"""通用参数类"""
keyword:str=Field(default="",description="关键字")
page_size:int=Field(default=20,description="每页数量")
current_page:int=Field(default=1,description="当前页码")
order_by:str=Field(default="",description="排序字段")
通用查询参数封装类,用于从前端接收get/post传参,内置了一些常用的参数,使用时可以继承此类
常用工具
本项目是基于fastapi为基础实现的开发框架。主要特点是简化代码量,内置ORM、Mongo、Cache等多种常见开发工具。结构简洁开包即用,框架自动扫描引入业务代码。
全局主键生成器
from hikepy import config
id=config.id()
通过config.id()方法生成全局唯一主键
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file hikepy-1.0.27.tar.gz.
File metadata
- Download URL: hikepy-1.0.27.tar.gz
- Upload date:
- Size: 21.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9916a41ce45e8880b6d86011ff78c233b6e32bea40be1042e46299ef481fa2be
|
|
| MD5 |
0f5ac6ac8156f365ff3f40e4ddde4a1d
|
|
| BLAKE2b-256 |
e28b56f34c66e365838f2149402d0d44c250a3b6e28a289bb52b8bcf2ba4b642
|