1. 新建项目结构
首先,创建如下结构的项目的文件,在项目跟路径下,创建主程序main.py文件。
1.routers 目录开发对应模块功能的接口
2.modles.py创建数据库模型
3.database.py 创建 SQLAlchemy 连接数据库
4.static放一下静态文件
5.template是模版文件夹,前后端不分离的时候用的较多,现在都是前后端分离的项目,所以可以删掉
在app目录的__init__.py文件中,写工厂函数,如下。这里面可以挂载资源,以及注册路由。
# app/__init__.py
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
from apps.routers import view_login, view_project
def create_app():
"""工厂函数"""
app = FastAPI()
# 挂载静态资源
app.mount("/static", StaticFiles(directory="./static"), name="static")
# 注册路由
app.include_router(view_login.router, prefix="/api/v1", tags=["登陆注册"])
app.include_router(view_project.router, prefix="/api/v1", tags=["项目"])
return app
注册的路由函数,我们在app文件夹中,新建router目录,用来写每个接口函数。
# app/router/view_login.py
from fastapi import APIRouter
from pydantic import BaseModel
router = APIRouter()
class UserInfo(BaseModel):
username: str
password: str
@router.post("/login")
async def login_demo():
return {"msg": "login success!"}
# app/router/view_project.py
from fastapi import APIRouter, Depends
router = APIRouter()
@router.post("/project")
async def create_project_demo():
return {"msg": "login success!"}
@router.get("/register")
async def get_all_demo():
return {"msg": "success!"}
写完接口函数,并且在工厂函数中进行了注册路由后,在main.py中,进行运行。
from apps import create_app
import uvicorn
app = create_app()
if __name__ == '__main__':
uvicorn.run(app="main:app", host='0.0.0.0', port=8080, reload=True)