FastApi-21-APIRouter

2023-11-06

Part1背景

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

Part2项目结构

项目目录

以上,model 为模型层,templateshtml 模板,views 为视图(其中每个视图都有其独立的路由器),mainapp 入口,所有的 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操作配置文件,超简单

点亮在看!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FastApi-21-APIRouter 的相关文章

  • 使用 ASP.NET 进行卷曲请求

    我已经阅读了 Stack 上的其他一些帖子 但我无法让它工作 当我在Windows机器上的git中运行curl命令时 它在我的电脑上工作正常 但是当我将其转换为asp net时 它不起作用 private void BeeBoleReque
  • 第一个通过 JavaScript 或 CSS 默认打开的手风琴

    我在 Shopify 产品页面中有 3 个手风琴 我打算在页面加载时默认展开第一个手风琴 页面加载后 单击其他手风琴应关闭所有以前打开的手风琴 我只想用纯 JavaScript 没有像 jQuery 这样的库 或 CSS 来做到这一点 我下
  • 我可以在为服务器提供 API 的同时提供静态文件吗?

    所以我对网络开发还很陌生 现在我和我更加面向网络的朋友开始了一个项目 他向我扔了各种各样的框架 我们正在做 Vuejs jade stylus 和 jeet 对于新手来说 这当然非常令人困惑 因为没有 Vuejs 示例使用 jade 没有
  • 如何在没有服务器或服务器端脚本的情况下创建动态访问数据库的内联网网站?

    问题是 必须在没有服务器托管的情况下创建 Intranet 网页 并且我一直在尝试使用 HTML 和 javascript 更新 Access 数据库 但这不适用于以下代码 请帮助 当以下代码从 Visual Studio 运行时 出现错误
  • 混合命名和未命名函数参数

    我有这个功能来验证 JWT 令牌 不是中间件 它说 package main import net http log fmt github com dgrijalva jwt go func ValidateToken w http Res
  • epoll_wait()接收socket关闭两次(read()/recv()返回0)

    我们有一个使用 epoll 来侦听和处理 http 连接的应用程序 有时 epoll wait 会连续两次收到 fd 上的 close 事件 含义 epoll wait 返回连接 fd 其中 read recv 返回 0 这是一个问题 因为
  • Django 中的 Meta 到底是什么?

    我想简单地知道 Django 中的 Meta 类是什么以及它们的作用 from django db import models Class Author models Model first name models CharField ma
  • 如何通过 HTML 输入标签获取文件的引用? (角度2)

    我想在 Firebase 中上传图片 但要做到这一点 我必须先获取文件 例如 如何通过 HTML 获取我的计算机的图像 我正在尝试这样做 但我不知道这样做的回报是什么 帮帮我吧伙计们
  • 表单标签的 CSS 样式

    据我所知 一个
  • 如何判断是哪个控件导致ViewState加载失败?

    我的页面面临 Viewstate 加载问题 页面有一个登录工具来登录管理员和非管理员用户 当非管理员用户登录页面并单击启用了自动回发的复选框时 会出现奇怪的行为 错误详情如下 后来我发现 在左侧的导航面板中 承载链接 侧边栏如下图所示 Se
  • 构建网站翻译文件

    我在建立网站时多次遇到这个问题 我将以使用 PHP 和 Laravel 为例进行解释 但这个问题在多个平台中都很常见 这已经在几个问题中得到了解决 post1 https stackoverflow com questions 317854
  • 从网站获取数据的vba代码

    我是这个网站和 VBA 编程的新手 我遇到了一个问题 我必须从中获取数据这一页 http www kieskeurig nl zoeken index html q 4960999543345 我需要有超链接网址Check Rates 10
  • 使用 hg 存储库作为网站

    这与我的安全问题有些相关here https stackoverflow com questions 2361626 security deny access to hg via mod rewrite 对实时网站使用 hg Mercuri
  • 尝试访问我的网站时出现内部服务器错误

    我收到这个错误 内部服务器错误 服务器遇到内部错误或配置错误 无法完成您的请求 请联系服务器管理员 电子邮件受保护 cdn cgi l email protection和 告知他们错误发生的时间以及您可能会发生的任何事情 所做的事情可能导致
  • 创建默认应用程序时 FirebaseOptions 不能为 null

    我正在尝试在 Flutter 集成电子邮件和基于 google 的登录中尝试一个示例项目 并计划使用 firebase 初始化来执行此操作 同时我已按照教程中提到的所有步骤进行操作 一旦尝试使用 firebase 我就会收到此错误已初始化
  • 使用节点http代理转发http代理

    我正在使用 node http proxy 库来创建转发代理服务器 我最终计划使用一些中间件来动态修改 html 代码 这就是我的代理服务器代码的样子 var httpProxy require http proxy httpProxy c
  • Jekyll 在子网站上生成静态网站?

    是否可以将 Jekyll 放在 GitHub 上托管的网站的单个部分上 即是否可以让 example github io 成为常规站点 而 example github io blog 由 Jekyll 静态生成 我相信可以通过创建另一个名
  • Ruby On Rails - 在控制器中使用关注点

    可能的菜鸟警告 刚接触 RoR 我正在尝试在 RoR 中使用关注点 现在我只写了一个非常简单的问题 app controllers concerns foo rb module Foo extend ActiveSupport Concer
  • 单击链接时启动本地应用程序

    我正在开发一个内部 Web 应用程序 它允许我为客户存储远程控制凭据 每次我想要连接到客户计算机时 我都需要启动远程支持软件 复制并粘贴用户名和密码 然后单击 开始 按钮 该软件将具有可用的命令行参数 允许我立即启动会话 但是 我不知道如何
  • Phonegap - cordova 在 Android 和 iOS 设备上延迟且缓慢

    我刚刚开始使用 zend studio 开始我的第一个 PhoneGap 项目 但是 在我构建并部署它之后 该应用程序非常慢 Android 和 iOS 均可 滚动滞后 如果我按下按钮 转到下一页的速度很慢 有什么办法可以提高它的性能吗 提

随机推荐

  • latex表格中的字上下垂直居中

    单元格内容纵向靠上对齐 而是表线距单元格内容太近 调整表线和单元格内容之间的距离 可以通过重定义 arraystretch 来解决 renewcommand arrarstretch
  • Cannot apply to AuthenticationConfiguration already built object

    前言 Spring Security 在Spring Boot 2 7 0中升级已弃用的WebSecurityConfigrerAdapter 并且根据 EnableWebSecurity推荐自定义配置类后 还是错误的问题 失败的案例 首先
  • 多元线性回归模型的F检验

    F检验 对于多元线性回归模型 在对每个回归系数进行显著性检验之前 应该对回归模型的整体做显著性检验 这就是 F检验 当检验被解释变量 yt与一组解释变量 x 1 x 2 xk 1是否存在回归关系时 给出的零假设与备择假设分别是 H0 b1
  • vc++2010安装教程

    vc 2010是微软公司开发的一个专门用来编写C语言或C 的一个简化般的IDE 本章我们就来安装一下这个IDE 链接 https pan baidu com s 18TEvNMeUSFtSrysWNZ 4nw提取码 cnmk这个百度网盘里面
  • pipe和fork浅析

    pipe和fork浅析 fork pipe fork fork 是linux上创建子进程的系统调用 fork 函数一次调用两次返回 在父进程返回值是子进程的进程id 在子进程的返回值是0 fork 创建出来的子进程会从fork 函数后面开始
  • sqlserver 对表列的添加、修改、删除

    修改列 alter table 表名 alter column 列名 类型 alter table g contractLog alter column optContent nvarchar 50 添加列 alter table 表名 a
  • SPPNet详解(白话讲解——附图文)

    SPPNet是何凯明大神提出的 为了解决R CNN中速度慢问题 在神经网络中输入图片的尺寸必须是固定的 这是因为在设计的时候FC层中神经元的个数都是固定的 导致输入图片尺寸必须是固定的 CNN是可以适应不同尺寸的输入图片 说明在CNN后面加
  • C#使用FFMpeg.Autogen进行rtsp视频倍速播放

    1 在你的C 项目中 使用NuGet包管理器安装FFMpeg Autogen 可以在Visual Studio中打开NuGet包管理器控制台 并运行以下命令来安装它 Install Package FFMpeg Autogen 2 在代码引
  • 环形链表II

    环形链表II 给定一个链表的头节点 head 返回链表开始入环的第一个节点 如果链表无环 则返回 null 如果链表中有某个节点 可以通过连续跟踪 next 指针再次到达 则链表中存在环 为了表示给定链表中的环 评测系统内部使用整数 pos
  • S-DES

    S DES即simplifed DES S DES算法的输入是一个8位的明文或者密文组和一个10位的密钥 输出是一个8位的密文或者明文组 以下是S DES所需的几个置换表 P10 3 5 2 7 4 10 1 9 8 6 P8 6 3 7
  • 去掉 Powered by Discuz! 6.0.0 © 2001-2007 Comsenz Inc.

    去掉 Powered by Discuz 6 0 0 2001 2007 Comsenz Inc templates default footer htm 倒数第15行 16行删除 即下面的代码 Powered by Discuz vers
  • 图形学数学基础之重要性采样(Importance Sampling)

    作者 i dovelemon 日期 2017 08 06 来源 CSDN 主题 Importance Sampling PDF Monte Carlo 引言 前面的文章 图形学数学基础之基本蒙特卡罗尔积分 Monte Carlo Integ
  • 数组访问越界问题

    1 什么是数组访问越界 我们通过数组的下标来得到数组内指定索引的元素 这称作对数组的访问 如果一个数组定义为有n个元素 那么 对这n个元素 下标为0 到 n 1的元素 的访问都合法 如果对这n个元素之外的访问 就是非法的 称为 越界 数组占
  • Customplot画多条折线图,同时可以控制每条曲线的隐藏和显示

    Customplot多条曲线的控制 前言 开始使用Qcharts画图 大数据性能极差 于是转用Customplot画图 主要进行数据的实时更新和大量数据的加载 一 模拟数据 采用子线程创建模拟数据 采用队列存储 pragma once in
  • PostgreSQL简单使用介绍

    之前没怎么接触各类数据库 现在对新上手的数据库都来学习一番 项目组经常用到的数据库和新使用的数据库都会做个笔记 本篇讲讲postgresql 1 安装配置postgresql 参考网址 https blog csdn net DaSo CS
  • LINUX驱动开发学习笔记---GCC编译器

    一 GCC编译器基础使用 Q 为什么需要GCC编译器 A 在Windows下我们 可以 使用各种各样的 IDE进行编程 比如强大的 Visual Studio 它既可以编辑也可以编译 但是linux下vi或vim编辑器只能用于编辑 不能编译
  • 【机器学习】最大熵算法 整理

    最大熵模型由最大熵原理推导实现 1 最大熵原理 最大熵原理认为 学习概率模型时 在所有可能的概率模型 分布 中 熵最大的模型是最好的模型 通常用约束条件来确定概率模型的集合 所以 最大熵原理也可以表述为在满足约束条件的模型集合中选取熵最大的
  • Python如何把 dict 快速转换为namedtuple

    下面的代码可能让你更容易理解
  • Maven实战(三)Eclipse构建Maven项目

    1 Eclipse安装m2eclipse插件 见eclipse maven plugin 插件 安装 和 配置 2 构建Maven项目 2 1 创建简单Maven项目 点击Eclipse菜单栏File gt New gt Ohter gt
  • FastApi-21-APIRouter

    Part1背景 通常在我们开发 app 时都会用到路由 像 Flask 有 blueprint Django 有 urls 等 其目的都是为了路由汇总管理 FastApi 也不例外 其拥有 APIRouter 今天我们就一起来了解 APIR