赞
踩
需求场景
如果我们写一个网站,或者写一个APP,那整个项目应该是比较复杂的,此时不应该把所有代码放在一个文件中。
前几节课,我们通过把代码拆分到不同文件的方式,可以解决一些代码混乱的问题,但是却不能更好的解决。
比如一个项目中可能含有不同的模块,那不同的模块应该分开管理,这样项目才便于维护和管理。
FastAPI的解决方式
APIRouter就是FastAPI为了此需求场景提供了一种解决方式,它类似 Flask中的蓝图,Django中的app
示例1:APIRouter的基本使用
app.include_router(blog.router, prefix="/blog", tags=["Blog"])
注册模块,同时可以指定及api的前缀(prefix)和标签(tags)from fastapi import FastAPI
from routers import blog, user
app = FastAPI()
app.include_router(blog.router, prefix="/blog", tags=["Blog"])
app.include_router(user.router)
router = APIRouter()
得到的 router对象和main.py中的app对象使用方式一样from fastapi import APIRouter router = APIRouter() @router.get("/blogs") def blogs(): return [{"id": i, "title": f"blog{i}"} for i in range(10)] @router.get("/{blog_id}") def get_blog(blog_id: int): return {"id": blog_id, "title": f"blog{blog_id}"} @router.delete("/{blog_id}") def delete(blog_id: int): return {"code": 1, "msg": f"Done blog_id: {blog_id}"}
from fastapi import APIRouter, Form
router = APIRouter(tags=["User"], prefix="/user")
@router.post("/login")
def login(name: str = Form(), pwd: str = Form()):
return {"name": name}
@router.get("/me")
def info():
return {"info": "this is a cute boy"}
补充:数据库中 blog建表sql
use db; -- 使用名字为 db 的数据库
CREATE TABLE `blogs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`body` TEXT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin AUTO_INCREMENT=1 ;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。