【FastAPI后台API 一】 配置文件验证

FastAPI 配置文件

配置文件目录


|____core                        // 项目存放一些重要的文件
| |______init__.py
| |____config                    // 配置文件夹
| | |______init__.py             // 根据虚拟环境导入不同配置
| | |____development_config.py   // 开发配置
| | |____production_config.py    // 生成配置

配置文件

使用第三方依赖库pydantic验证配置文件合法性。

pydantic官方文档 https://pydantic-docs.helpmanual.io/

github地址 https://github.com/samuelcolvin/pydantic

需要安装依赖pip install pydantic

from pydantic import BaseSettings

发现FastAPI作者 tiangolo 正在写一个SQLAlchemy models自动生成Pydantic models的工具 github地址 https://github.com/tiangolo/pydantic-sqlalchemy

区分生产和开发

我这是一种最为直白简单的方式,区分生产和开发环境, 缺点是所有的配置都写在代码里面了。

import os

# 获取环境变量
env = os.getenv("ENV", "")
if env:
    # 如果有虚拟环境 则是 生产环境
    print("----------生产环境启动------------")
    from .production_config import settings
else:
    # 没有则是开发环境
    print("----------开发环境启动------------")
    from .development_config import settings

还有一种了,就是就是配置文件固定读取一个目录下文件如/etc/conf/fast_admin_conf.py或者.ini文件 如果能读取说明为生产环境,读取不到则说明为开发环境。

指定文件格式

pydantic内置了很多数据类型验证,包括很多很复杂的嵌套的类型都有

from typing import List
from pydantic import BaseSettings, validator, IPvAnyAddress, EmailStr, AnyHttpUrl

class Settings(BaseSettings):
    #
    API_V1_STR: str = "/api/admin/v1"
    # SECRET_KEY 记得保密生产环境 不要直接写在代码里面
    SECRET_KEY: str = "(-ASp+_)-Ulhw0848hnvVG-iqKyJSD&*&^-H3C9mqEqSl8KN-YRzRE"

    # token过期时间 60 minutes * 24 hours * 8 days = 8 days
    ACCESS_TOKEN_EXPIRE_MINUTES: int = 60 * 24 * 8

    # 跨域设置 验证 list包含任意http url
    BACKEND_CORS_ORIGINS: List[AnyHttpUrl] = ['http://localhost']

    # 验证邮箱地址格式
    FIRST_MALL: EmailStr = "wg_python@163.com"

# 实例化配置对象
settings = Settings()

注意 一定要实例化配置对象,实例化的时候,才会去验证数据合法性。

参考GitHub地址

自己改的FastAPI项目生成器 https://github.com/CoderCharm/fastapi-mysql-generator

GitHub地址 https://github.com/CoderCharm/FastAdmin/blob/master/backend/app/core/config/development_config.py


文章作者: 王小右
版权声明: 咳咳想白嫖文章?本文章著作权归作者所有,任何形式的转载都请注明出处。 https://www.charmcode.cn !
  目录