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/


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


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


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


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

目录
打赏
0
0
0
0
3
分享
相关文章
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过高的版本。
218 0
FastAPI是什么?
FastAPI是一个现代、高性能的Python Web框架,专为构建API设计。它利用标准的Python类型提示,支持同步及异步编程,并借助Pydantic实现数据验证。FastAPI以卓越的性能媲美Node.js和Go,代码简洁优雅,能自动生成交互式API文档如Swagger UI和ReDoc,方便测试和调试。其对`async`和`await`的支持使之适用于WebSocket等高并发场景。快速上手仅需安装FastAPI和Uvicorn,编写少量代码即可启动服务并访问自动生成的文档界面。FastAPI不仅易于入门,还支持复杂的功能如依赖注入和后台任务,非常适合追求高性能和快速开发的项目。
176 1
fastapi之helloworld
fastapi之helloworld
|
9月前
|
FastAPI入门指南
FastAPI是基于Python类型提示的高性能Web框架,用于构建现代API。它提供高性能、直观的编码体验,内置自动文档生成(支持OpenAPI)、数据验证和安全特性。安装FastAPI使用`pip install fastapi`,可选`uvicorn`作为服务器。简单示例展示如何定义路由和处理函数。通过Pydantic进行数据验证,`Depends`处理依赖。使用`uvicorn main:app --reload`启动应用。FastAPI简化API开发,适合高效构建API应用。5月更文挑战第21天
266 1
FastAPI
【2月更文挑战第1天】FastAPI是一个用于构建API的现代、快速的Python Web框架,具有以下特点:
154 9
|
9月前
|
FastAPI中如何调用同步函数
FastAPI中如何调用同步函数
350 0
使用Python构建RESTful API:Flask和FastAPI的对比与实践
在现代Web开发中,构建RESTful API是一项常见任务。Python提供了多个框架来简化这个过程,其中Flask和FastAPI是两个备受欢迎的选择。本文将对比Flask和FastAPI,并通过实际示例展示它们的用法和优势。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等