Part1背景
通常在我们开发 app
时都会用到路由,像 Flask
有 blueprint
,Django
有 urls
等,其目的都是为了路由汇总管理。FastApi
也不例外,其拥有 APIRouter
。今天我们就一起来了解 APIRouter
是如何使用的。
Part2项目结构
项目目录
以上,model
为模型层,templates
为 html
模板,views
为视图(其中每个视图都有其独立的路由器),main
为 app
入口,所有的 APIRouter
都在这里注册。
Part3代码
1视图中路由器的定义和使用
from fastapi import FastAPI,Depends,Header,HTTPException,APIRouter
from starlette.requests import Request
from starlette.templating import Jinja2Templates
from starlette import status
import uvicorn
from deta import Deta
from fastapi.responses import StreamingResponse
# 实例化路由器
router = APIRouter()
templates = Jinja2Templates('templates')
# 注意,视图这里使用router来声明请求方式&URI
@router.get('/users/')
def user_list():
return "这是用户们"
@router.get('/imgs/')
def img_list():
return "这是图片"
2main 中的路由器注册
from fastapi import Depends, FastAPI
from views import user
from views.utm import login_required
import uvicorn
# 如果需要开启app鉴权,则用这种方式↓
# app = FastAPI(dependencies=[Depends(login_required)])
app = FastAPI() # 免鉴权
app.include_router(
user.router,
prefix='/um',
tags=['um'],
responses={520: {"description": "I'm a user description!"}}
)
@app.get("/")
async def root():
return {"message": "Welcome to Applications APIRouter!"}
if __name__ == "__main__":
uvicorn.run(app='main:app',host='127.0.0.1',port=8765,reload=True)
3浏览器访问
根路由
um路由到users
um路由到imgs
怎么样,简单吧,你学废了吗?
以上就是今天的全部内容了,感谢您的阅读,我们下节再会。
完
往期推荐
Gevent | 异步就用它!
5分钟带你了解Scrum
5分钟学会本地Pypi源搭建
FastApi-18-Token生成
FastApi-19-Token校验
FastApi-20-Token获取和使用
jenkinsclient | 好用的jenkins客户端
PySimpleGUI经典实践之:这个汉字怎么读?
IO被谁吃了?
Jmeter测试TCP百万连接
用Python操作配置文件,超简单
点亮在看!