今天对工作中对外提供的接口服务做了下优化,进行一下大概的分享。
一、enum介绍 enum模块定义了一个提供迭和比较功能的枚举类型;
可以用这个模块为值创建明确定义的符号,而不是使用字面量整数或字符串。
1.1通过继承enum.Enum派生出新的枚举类
class ENV(enum.Enum):
ST = 'st'
UAT = 'uat'
PRD = 'prd'
# 解析这个类时,Enum的成员会被转为实例;每个实例对应有一个name属性和value属性;
print(f'ENV.DEV.name={ENV.DEV.name},ENV.DEV.value=https://www.it610.com/article/{ENV.DEV.value}')# ENV.DEV.name=DEV,ENV.DEV.value=https://www.it610.com/article/dev
1.2通过enum.Enum()创建枚举类
【Python|【python】通过数据库进行fastapi swaggerUI的下拉选项配置】Enum的参数有歧义,names参数传的才是参数名和参数值,value传生成的类名
语法:
enum.Enum(value=https://www.it610.com/article/‘class_name’,names=[(var1,value1),(var2,value2)…])
ENV = enum.Enum(value='https://www.it610.com/article/SS',names=[('DEV','dev'),('ST','st'),('UAT','uat')])
print(ENV.mro())# [, , ]
print(ENV.DEV.name)# DEV
print(ENV.DEV.value)# dev
二、fastapi下拉选项配置 2.1 利用1.2来实现枚举类的创建
class EnumParams():
configs = None
def getConfigs(self):
if not self.configs:
# 查数据库,获取所有Enum参数配置信息
self.configs = 获取到的参数配置信息 def getEnumPatams(self,param_key):
self.getConfigs()
# 从self.configs获取对应参数配置,转为List[Dict[str,str]]形式
casts = ...
return enum,Enum(value=https://www.it610.com/article/param_key,names=casts)PARAMS = EnumParams()
2.2 结合fastapi使用示例
from fastapi import APIRouter,Query
from xxx import PARAMS xxRoutor = APIRouter()
# 根据paramKey获取配置信息,生成枚举类
xxEnumParamKey = PARAMS.getEnumPatams('xxEnumParamKey')@xxRoutor.get('/xxx')
def xxx(var:xxEnumParamKey = Query(xxEnumParamKey.PARAM1)):
return 'xxx'
推荐阅读
- 人工智能|创新实践”项目介绍9(《Taekwondo Automatic Scoring System》)
- 编程语言|2020 年编程语言盘点展望(Java 老兵不死,Kotlin 蓄势待发)
- MicroPython|Micropython——九轴传感器(MPU6050)的使用及算法(一)
- Python 函数进阶-迭代器
- python|python 测试_python 几种常用测试框架
- pytorch|学习使用pytorch构建线性回归模型
- 深度学习|mmsegmentation 报错
- 计算机视觉|将voc数据集xml格式、labelme标注转为coco数据集json格式
- python|数据分析【机器学习】-KNN分类模型