FastApi-18-APIRouter

简介: FastApi-18-APIRouter

Part1背景


通常在我们开发 app 时都会用到路由,像 FlaskblueprintDjangourls 等,其目的都是为了路由汇总管理。FastApi 也不例外,其拥有 APIRouter。今天我们就一起来了解 APIRouter 是如何使用的。


Part2项目结构


网络异常,图片无法展示
|


项目目录


以上,model 为模型层,templateshtml 模板,views 为视图(其中每个视图都有其独立的路由器),mainapp 入口,所有的 APIRouter 都在这里注册。


Part3代码


1视图中路由器的定义和使用


views目录中user.py


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 utm,openstack,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


4将图片展示出来


眼尖的同学可能已经注意到,上面对于图片的展示是用文字来替代的,那怎么样将图片展示出来呢?答案是用 FastApi 中的 StreamingResponse 对象来进行响应。


@router.get('/imgs/')
def img_list():
    #return "这是图片"
    file_like = open('templates/baidu.png', mode="rb")
    return StreamingResponse(file_like, media_type="image/jpg")
复制代码


再次访问:localhost:8765/um/imgs/


网络异常,图片无法展示
|


可以看到,图片他已经成功展示。


怎么样,简单吧,你学废了吗?


感谢您的阅读,别忘了关注,点赞,评论,转发四连哟!

相关文章
|
存储 消息中间件 缓存
9 个 FastAPI 的必知资源
FastAPI 是 Python 开发人员最新、最流行的 API 框架之一。我们的工程师一次又一次需要将一个或多个第三方库与我们的 API 结合使用,以附加额外的功能和特性来丰富我们的项目。
582 0
|
Python
python flask 后端报错 ImportError: cannot import name ‘cached_prope‘
问题python flask 后端报错 ImportError: cannot import name ‘cached_prope‘flask程序启动但抛出该错误,是因为werkzeug 版本过高,需要降低版本即可 解决:一般这种情况是需要注意第三方库版本的对应,werkzeug需要0.16.0 版本时 flask的版本应该时1.x.x 的版本,不能是2.x过高的版本。
197 0
|
4月前
|
JavaScript Shell API
FastAPI是什么?
FastAPI是一个现代、高性能的Python Web框架,专为构建API设计。它利用标准的Python类型提示,支持同步及异步编程,并借助Pydantic实现数据验证。FastAPI以卓越的性能媲美Node.js和Go,代码简洁优雅,能自动生成交互式API文档如Swagger UI和ReDoc,方便测试和调试。其对`async`和`await`的支持使之适用于WebSocket等高并发场景。快速上手仅需安装FastAPI和Uvicorn,编写少量代码即可启动服务并访问自动生成的文档界面。FastAPI不仅易于入门,还支持复杂的功能如依赖注入和后台任务,非常适合追求高性能和快速开发的项目。
|
4月前
|
Python
[python]使用gunicorn部署fastapi服务
[python]使用gunicorn部署fastapi服务
195 1
|
4月前
|
JavaScript API Go
fastapi之helloworld
fastapi之helloworld
|
5月前
|
Python
|
6月前
|
SQL 数据库 开发者
Flask、SQLAlchemy
【6月更文挑战第5天】
49 3
|
7月前
|
安全 API Python
FastAPI入门指南
FastAPI是基于Python类型提示的高性能Web框架,用于构建现代API。它提供高性能、直观的编码体验,内置自动文档生成(支持OpenAPI)、数据验证和安全特性。安装FastAPI使用`pip install fastapi`,可选`uvicorn`作为服务器。简单示例展示如何定义路由和处理函数。通过Pydantic进行数据验证,`Depends`处理依赖。使用`uvicorn main:app --reload`启动应用。FastAPI简化API开发,适合高效构建API应用。5月更文挑战第21天
226 1
|
7月前
|
缓存 中间件 API
FastAPI
【2月更文挑战第1天】FastAPI是一个用于构建API的现代、快速的Python Web框架,具有以下特点:
141 9