Skip to Content

创建项目及基础配置

  • 本项目使用uv进行创建管理,关于UV的使用方法在这里。当然,你也可以用Conda,或者啥也不用。

创建项目

  • 进入你想创建项目的目录,执行一下命令:
uv init api-gateway
  • 该命令会创健一个名为api-gateway的项目,目录结构如下:
api-gateway ├── .python-version ├── README.md ├── main.py └── pyproject.toml
  • 如果现在在项目中使用虚拟环境,那么你需要在项目中创建一个虚拟环境,执行以下命令:
uv venv
  • 该命令会在项目中创建一个名为.venv的虚拟环境,你可以在项目中使用该虚拟环境。

安装依赖

  • 进入项目目录,使用uv或 pip安装一下的依赖包: Fastapi uvicorn
uv add fastapi uvicorn

创建基础服务

  • 进入项目目录,修改main.py文件,添加以下代码:
import uvicorn from fastapi import FastAPI app = FastAPI() @app.get("/") def read_root(): return {"Hello": "World"} if __name__ == "__main__": uvicorn.run("main:app", reload=True)

运行项目

  • 使用uv运行项目:
uv run main.py
  • 或者使用python运行项目:
python main.py
  • 运行成功之后,会看到类似以下信息,这代表项目已经启动成功:
INFO: Will watch for changes in these directories: ['/Users/peng/project/ai-app-dome/api-gateway'] INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) INFO: Started reloader process [14506] using StatReload INFO: Started server process [14520] INFO: Waiting for application startup. INFO: Application startup complete.
  • 现在打开浏览器,访问http://127.0.0.1:8000,会看到类似以下信息:
{ "Hello": "World" }
  • 在路径后面加上/docs,就可以看到fastapi的文档了:
    dome

完善项目框架

我们需要完善一下项目框架,以便后续的开发。

  • 创建一个api目录,用于存放项目的api代码。
  • 创建一个core目录,用于存放项目的核心代码。
  • 创建一个schemas目录,用于存放项目的模型代码。
  • 创建一个utils目录,用于存放项目的工具代码。

这时的目录结构如下:

      • __init__.py
      • __init__.py
      • __init__.py
      • __init__.py
    • main.py
    • config.py
    • pyproject.toml
    • README.md
    • .python-version

配置

创建配置文件

  • 为了方便管理配置,我们可以项目根目录下创建一个配置文件,用于存储项目的配置信息。 创建一个config.py文件,并添加以下代码:
import os from dotenv import load_dotenv, find_dotenv from pydantic_settings import BaseSettings from typing import List class Config(BaseSettings): # 加载环境变量 load_dotenv(find_dotenv(), override=True) # 调试模式 APP_DEBUG: bool = True # 项目信息 VERSION: str = "0.0.1" PROJECT_NAME: str = "api-gateway" # 文档地址 DOCS_URL: str|None = "/docs" REDOC_URL: str|None = "" # 跨域请求 CORS_ORIGINS: List = ["*"] CORS_ALLOW_CREDENTIALS: bool = True CORS_ALLOW_METHODS: List = ["*"] CORS_ALLOW_HEADERS: List = ["*"] settings = Config()
Last updated on