【FastAPI后台API 一】配置文件(移步博客园或个人网站)

FastAPI 配置文件

准备使用Vue + FastAPI开发一套后台管理系统,记录自己使用FastAPI的技术点。

移步博客园

https://www.cnblogs.com/CharmCode/p/14191077.html

配置文件目录


|____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()

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

一些扩展知识

  • 为什么不用 .ini .ymal等配置文件了?

答: 由于Python是解释性语言,把配置文件写代码里面,没什么不方便的,当然Python也可以使用.ini .ymal等配置文件。
如Go Java等编译性语言,把配置文件直接写代码,如果仅仅只是要改动配置文件,就很不方便,就需要重新再编译打包,耗时。

参考GitHub地址

见个人博客 https://www.charmcode.cn/article/2020-07-11_FastAPI_Setting

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值