FastAPI和APIRouter

在FastAPI框架中,app = FastAPI()router = APIRouter() 分别代表了应用的两个核心构建块,它们在构建API时扮演着不同的角色:

1、app = FastAPI()

这行代码是创建FastAPI应用实例的起点。FastAPI 类是FastAPI框架的核心,它继承自Starlette,提供了一个高性能的Web应用基础结构,专为构建API设计。当你初始化一个 FastAPI 实例(通常命名为 app),你就创建了一个可以接收HTTP请求、处理请求、返回响应的应用服务器。

  • 作用:定义整个Web应用的基本配置,如中间件、全局异常处理、依赖注入等。
  • 功能:可以挂载路由配置中间件设置全局参数等,是应用的入口点。
  • 使用场景:几乎在每个FastAPI项目中都会首先创建这样一个实例,并通过它来组织和配置整个应用

2、router = APIRouter()

APIRouter 是FastAPI中用于组织和分组路由的一个类。通过创建一个 APIRouter 实例(通常命名为 router),可以将相关的路由(如属于同一功能模块的路由)聚合在一起,然后将这个路由器挂载到主应用 app 中,以此来保持代码的组织性和可维护性

  • 作用:帮助组织和模块化路由,使得大型应用的路由管理更加清晰。
  • 功能:可以有自己的中间件、全局依赖项、前缀、标签等,便于对API进行分组和分类。
  • 使用场景:当希望按照功能模块来划分路由时,比如用户管理模块、文章管理模块等,每个模块可以有一个独立的路由器,然后将这些路由器添加到主应用中。

示例流程

  1. 创建FastAPI应用

    from fastapi import FastAPI
    app = FastAPI()
  2. 创建路由器

    from fastapi import APIRouter
    router = APIRouter()
  3. 定义路由到路由器

    @router.get("/items/{item_id}")
    async def read_item(item_id: int):return {"item_id": item_id}
  4. 将路由器挂载到FastAPI应用

    app.include_router(router)

通过这样的架构,你可以轻松地管理和扩展API,特别是在团队协作或大型项目中,每个团队或模块可以专注自己的路由器,而整体应用的结构依旧保持清晰和有序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/36330.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小型智能驱鸟器,建筑驱鸟专用

随着城市化进程的加快,鸟类与人类的居住空间逐渐交织重合,鸟类对建筑物的侵扰问题也愈发凸显。家庭庭院、住宅窗前、屋顶,甚至那些承载着历史与文化底蕴的名胜古迹和精美雕像,都时常受到鸟粪的污染。鸟粪具有腐蚀性且很难清理&…

课题推荐系统介绍

课题推荐系统介绍 课题推荐系统是一种基于推荐算法和自然语言处理技术,自动化地为用户推荐符合其兴趣和需求的研究课题的系统。该系统通过分析用户的输入(如类别、领域和关键字),结合大数据和人工智能技术,从庞大的课…

应用监控pinpoint调研

参考 https://blog.csdn.net/Rose_juvenile/article/details/135285508?utm_mediumdistribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-135285508-blog-132330996.235^v43^pc_blog_bottom_relevance_base6&spm1001.2101.3001.4242.1&a…

数据库数据目录磁盘扩展,物理卷扩展为逻辑卷

背景,之前的 pg 数据库数据目录使用的是物理盘,不支持扩展,随着数据增大,磁盘空间告警,现在需要将新的磁盘制作成逻辑卷,以便之后扩展使用。 之前使用的数据目录为 /u01 停止数据库 停止数据库 停止数据…

Windows中配置python3.11环境安装教程

希望文章能给到你启发和灵感~ 如果觉得文章对你有帮助的话,点赞 关注 收藏 支持一下博主吧~ 阅读指南 开篇说明一、基础环境说明1.1 硬件环境1.2 软件环境 二、软件的下载和安装2.1 下载2.2 安装2.3 验证安装结果 三、最后 开篇说明 应要求为…

Java变量与标识符

一、关键字(Keyboard) 定义:被Java语言赋予了特殊含义,用做专门用途的字符串(或单词) 特点:全部关键字都是小写字母 官方地址: https://docs.oracle.com/javase/tutorial/java/nut…

DB-GPT Docker部署

感谢阅读 拉取镜像linux判断拉取是否成功的方法windows判断拉取是否成功的方法 模型以及启动容器模型启动容器 界面如下(0.56): 拉取镜像 docker pull eosphorosai/dbgpt:latestlinux判断拉取是否成功的方法 docker images | grep "eo…

龙国南方航空滑块acw_v2+cookie+风控处理+type后缀

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未经许可禁…

中小企业的数字化转型业务场景落地案例

引言:随着商业活动的复杂化和全球化程度的提高,合同作为商业交易的重要组成部分,其数量、条款和复杂性都在不断增加。企业面临着越来越多的合同管理挑战,包括合同数量增多、条款繁琐、文件分散存储等问题。而中小企业由于管理不到…

elk对于集群实例的日志的整合-基于logstash采集日志

说明:基于logstash采集日志 环境: 物理机192.168.31.151 一.启动2个测试实例,每5-10s随机生成一条订单日志 实例一 包位置:/home/logtest/one/log-test-0.0.1-SNAPSHOT.jar 日志位置:/docker/elastic/logstash_ingest_data/l…

C++学习笔记:C++基础语法+编程思想

C基础 参考:C 教程 | 菜鸟教程 (runoob.com) 用于部署、opencv 学习内容:编程核心部分 学习要求:能读懂代码,复现代码 python:语言简洁,用于解决数据分析问题 面向对象:一种程序的编程思维&…

leecode 111.简单题 给定一个二叉树,计算二叉树的最小深度

最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 叶子节点是指没有子节点的节点 class Solution {public int minDepth(TreeNode root) {/**第一反应是通过一个递归解决;*/if(root null){return 0;}int lmd minDepth(root.left);int rmd minDepth(roo…

MYSQL存储过程的创建

关于存储过程的题目 1、创建存储过程,查看user表中的所有数据 2、创建存储过程avg_order_quantity,返回所有订单的平均工资 3、创建存储过程show_max_bprice,用来查看bookS的单价最贵的价格 4、创建存储过程show_min_bprice,用来查看bookS的单价最低的价格,并将…

JVM之双亲委派机制

1.双亲委派机制 在Java中,类加载器具有层次结构。每个Java实现的类加载器中保存了一个成员变量叫“父”类加载器(parent),可以理解为上级,并不是继承关系。应用程序类加载器的parent父加载器是扩展类加载器&#xff0…

ulimit报错

问题 执行命令“ulimit -c 2048 ”时报错:“bash: ulimit: core file size: cannot modify limit: Operation not permitted” 原因 权限不够。 解决办法 执行命令“sudo gedit /etc/security/limits.conf”打开文件limits.conf文件内添加内容如下:…

在 Java 中从 for 循环中移出元素的原理及解决方案

在 Java 中从 for 循环中移出元素的原理及解决方案 在 Java 编程中,从集合中移除元素是常见操作。然而,直接在 for 循环中删除或移出元素往往会导致 ConcurrentModificationException(数组下标越界)。本文将详细解释这种情况发生…

【索引】数据库索引之散列索引

目录 1、什么是散列? 2、如何评价一个散列函数的好坏? 3、散列中的桶溢出处理 4、散列在索引中的应用 4、顺序索引和散列索引的比较 1、什么是散列? 顺序文件组织的一个缺点是我们必须访问索引结构来定位数据,或者必须使用二…

最经典实用的Buck电路仿真与设计 /Psim仿真Buck电路详解

为了节省大家时间,减少找软件的麻烦,提供了软件下载地址,如果需要下载,请访问下面的网站进行购买: Psim电力仿真软件安装-送教程和维也纳整流电路仿真-可远程安装-淘宝网 (taobao.com) 或者加作者微信,发20元微信红包便可直接获取下载软件,如果找不到软件,有需要下载的…

软件协同开发是一种通过团队合作来创建软件的开发方法

软件协同开发是一种通过团队合作来创建软件的开发方法。与传统的瀑布模型相比,软件协同开发强调团队成员之间的合作和沟通,以实现更高效的开发过程和更优质的软件产品。 在软件协同开发中,团队成员通过一系列工具和技术来协同工作。这些工具…

MATLAB2024a下的BP神经网络分类工具箱预测

1 打开BP神经网络分类工具箱GUI界面 图1-1 如图1-1所示,虽然叫神经网络模式识别但确实是BP神经网络分类工具箱,如果想要使用其他神经网络模型,可以打开左边的深度网络网络设计器,如图1-2、图1-3所示: 图1-2 图1-3 2 导…