FastAPI系列 4 -路由管理APIRouter

简介: 本文是FastAPI系列教程的第四部分,介绍了如何使用APIRouter进行路由管理,通过示例展示了将应用程序功能拆分到不同的模块和文件中,创建用户和书籍的API路由,以及在FastAPI主应用中包含这些路由的方法,并提供了运行结果和API交互文档的截图。

FastAPI系列 -路由管理APIRouter

文章目录

  • FastAPI系列 -路由管理APIRouter
  • 一、前言
  • 二、APIRouter使用示例
    • 1、功能拆分
    • 2、users、books模块开发
    • 3、FastAPI主体
  • 三、运行结果

一、前言

未来的py开发者请上座,在使用python做为后端开发一个应用程序或 Web API,很少会将所有的内容都放在一个文件中。FastAPI 提供了一个方便的工具,可以在保持所有灵活性的同时构建你的应用程序。

二、APIRouter使用示例

1、功能拆分

功能:在Web输入Url返回数据,但需要使用在users、books中定义的API

├── fastapi
│   ├── __init__.py
│   ├── main.py
│   └── routers
│   │   ├── __init__.py
│   │   ├── users.py
│   │   └── books.py

app 目录包含了所有内容。并且它有一个空文件 app/init.py,它包含一个 app/main.py 文件。
routers 目录下有 books.py 和 users.py 2个文件。

项目目录层级如下:
在这里插入图片描述

2、users、books模块开发

专门用于处理用户逻辑的文件是位于 /fastapi/routers/users.py 的子模块

users.py

# -*- coding:utf-8 -*-
from fastapi import APIRouter
router = APIRouter()

# 获取用户列表
@router.get("/users/", tags=["users"])
async def read_users():
    return [{"username": "Teacher Li"}, {"username": "Teacher Tom"}]

# 获取个人详情
@router.get("/users/one", tags=["users"])
async def read_user_me():
    return {"username": "Teacher Li", "phone_number": "0123456789"}

# 获取用户名称
@router.get("/users/{username}", tags=["users"])
async def read_user(username: str):
    return {"username": username}

专门用于处理书逻辑的文件是位于 /fastapi/routers/books.py 的子模块
books.py

# -*- coding:utf-8 -*-
from fastapi import APIRouter


router=APIRouter()

@router.get('/books', tags=["books"])
async def create_book(book):
    result={"book":book}
    return result

@router.get('/getbooks', tags=["books"])
async def get_book():
    result=[{"book":'测试1'},{'book':'测试2'}]
    return result

此模块中的所有路径操作都有相同的:

  • 路径 prefix:路径前缀 /users。
  • tags:(仅有一个 users 标签)。
  • responses: 定义响应状态码
  • dependencies:依赖项。

3、FastAPI主体

main.py

import uvicorn
from fastapi import Depends, FastAPI
from routers import books, users


app = FastAPI()

app.include_router(users.router)
app.include_router(books.router)

@app.get("/")
async def root():
    return {"message": "Hello Bigger Applications!"}

if __name__ == '__main__':
    uvicorn.run(app,port=15341)

三、运行结果

uvicorn启动FastAPI后端
运行main.py
在这里插入图片描述
返回页面
在这里插入图片描述

启动服务,访问http://127.0.0.1:15341/docs,生成的APi交互文档
在这里插入图片描述

相关文章
|
4月前
|
Python
Fastapi进阶用法,路径参数,路由分发,查询参数等详解
Fastapi进阶用法,路径参数,路由分发,查询参数等详解
202 1
|
11月前
|
存储 IDE API
最佳实践:通过 FastAPI APIRouter 提升开发效率
FastAPI 是一个现代的、高性能的 Python Web 框架,它提供了 APIRouter 来帮助组织和管理路由。APIRouter 是一个可用于组织和分组路由的类,使得代码结构更加清晰和可维护。本文将介绍 FastAPI APIRouter 的用法,包括实践案例以及在 IDE 编辑器中的运行步骤。
|
API Python
全面拥抱FastApi — 蓝图APIRouter
全面拥抱FastApi — 蓝图APIRouter
|
机器学习/深度学习 开发框架 前端开发
FastAPI第一天---环境搭建以及路由
FastAPI第一天---环境搭建以及路由
489 0
FastAPI第一天---环境搭建以及路由
|
JSON 前端开发 数据格式
fastapi(65)- 路由函数指定了 response_model,在返回自定义 JSONResponse 时, 不会限制它返回的数据结构
fastapi(65)- 路由函数指定了 response_model,在返回自定义 JSONResponse 时, 不会限制它返回的数据结构
327 0
fastapi(65)- 路由函数指定了 response_model,在返回自定义 JSONResponse 时, 不会限制它返回的数据结构
FastAPI 学习之路(三十六)引入APIRouter
FastAPI 学习之路(三十六)引入APIRouter
FastAPI 学习之路(三十六)引入APIRouter
|
JSON 算法 安全
fastapi 安全性 / APIRouter / BackgroundTasks / 元数据 / 测试调试
fastapi 安全性 / APIRouter / BackgroundTasks / 元数据 / 测试调试
273 0
fastapi 安全性 / APIRouter / BackgroundTasks / 元数据 / 测试调试
|
NoSQL 测试技术 Redis
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
|
存储 测试技术 数据安全/隐私保护
FastAPI(八十三)实战开发《在线课程学习系统》--注册接口单元测试
FastAPI(八十三)实战开发《在线课程学习系统》--注册接口单元测试
FastAPI(八十三)实战开发《在线课程学习系统》--注册接口单元测试
|
测试技术 数据安全/隐私保护
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(上)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(上)