Python|【python】通过数据库进行fastapi swaggerUI的下拉选项配置

今天对工作中对外提供的接口服务做了下优化,进行一下大概的分享。
一、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'

    推荐阅读