当前位置:   article > 正文

FastAPI Web框架教程 第10章 APIRouter_fastapi apirouter

fastapi apirouter

10-1 APIRouter基本使用

需求场景

如果我们写一个网站,或者写一个APP,那整个项目应该是比较复杂的,此时不应该把所有代码放在一个文件中。

前几节课,我们通过把代码拆分到不同文件的方式,可以解决一些代码混乱的问题,但是却不能更好的解决。

比如一个项目中可能含有不同的模块,那不同的模块应该分开管理,这样项目才便于维护和管理。

FastAPI的解决方式

APIRouter就是FastAPI为了此需求场景提供了一种解决方式,它类似 Flask中的蓝图,Django中的app

示例1:APIRouter的基本使用

  • main.py 非常简洁,主要负责注册管理
  • 使用 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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • routers/blog.py 主要负责和blog模块有关的业务
  • 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}"}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • routers/user.py,负责和用户相关的模块
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"}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

10-2 APIRouter集成到Blog_app项目

  • 见源码 blog_app

补充:数据库中 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 ;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 项目结构

在这里插入图片描述

  • api文档
    在这里插入图片描述
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号