当前位置: 首页 > news >正文

fastapi中实现多个路由请求

大家伙,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。

前言

最近在写机器人相关的接口,顺手学了学python,发现这是个好东西,写代码效率比java要高很多,比如写个词云呀,写个回调呀,或者写个数据分析等等,都很方便。

今天,顺便在此记录一下,在使用fastapi的时候,创建多个文件,多个路由的问题。

一、创建新类api_sys.py

比如,我们这个类,就是一个崭新的路由,我们调用该类中的接口时,路由地址为:你的ip/路由/接口名,那么,我们来看看如何实现。

# 引入依赖
from fastapi import APIRouterrouter = APIRouter()## 创建类,接收接口传递的json数据
class WechatDto(BaseModel):msg: str = None  # 消息内容tag: int = None  # 消息类型,例如:0表示发送文字,1表示发送图片等finalFromWxid: str = None  # 如果是群消息,发送消息的人的微信IDfinalFromNick: str = None  # 如果是群消息,发送消息的人的微信IDfromWxid: str = None  # 发送消息的人的微信ID,如果是好友则为好友的wxidfromNick: str = None  # 发送消息的人的昵称,如果是好友则为好友的昵称memberCount: int = None  # 如果是群消息,群成员的数量;如果是好友消息则为空time: str = None  # 发送时间msgSource: int = None  # 发送消息的来源,0表示别人发送,1表示自己发送atList: list = []  # 艾特的人列表,通常是一个包含微信ID的列表# 创建get方法def get(self, param):return getattr(self, param)# 微信机器人自定义接口
@router.post("/receive_message")
def receive_message(wechat: WechatDto):# 获取消息msg = wechat.msg# 获取用户finalFromWxid = wechat.finalFromWxid# 获取需要发送的群fromWxid = wechat.fromWxidfinalFromNick = wechat.finalFromNickuser_nick_list = [finalFromNick]user_name_list = [finalFromWxid]result = ''if msg.find("小助手") != -1:result = jiadian(msg, fromWxid, user_nick_list, user_name_list)return result

注意,关键代码就这几行:

from fastapi import APIRouter
router = APIRouter()
@router.post("/receive_message")

然后,我们在main.py中引入这个路由类:


from fastapi import FastAPI
# 导入依赖
from api.api_sys import router as api_sys_routerapp = FastAPI()
# 添加前缀,例如
app.include_router(api_sys_router, prefix="/api")

其余就是你别的代码了,接下来,我们可以使用apipost来调用一下该接口,调用地址为:127.0.0.1:7552/api/receive_message,然后再body中该怎么传参就怎么传参,我这边传参是个json,就不在这里展示了。

创建第二个类api_huidiao.py

为了给大家能够跟清晰的展示,多个路由的概念,我们可以再创建一个类,继续当做一个路由,走走流程:


from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from typing import Optional, List
from fastapi import APIRouterapp = FastAPI()huidiao_router = APIRouter()class CallBackDataEntity(BaseModel):port: Optional[int] = Nonepid: Optional[int] = Nonewxid: Optional[str] = NonewxNum: Optional[str] = Nonenick: Optional[str] = Nonedevice: Optional[str] = Nonephone: Optional[str] = NoneavatarUrl: Optional[str] = Nonecountry: Optional[str] = Noneprovince: Optional[str] = Nonecity: Optional[str] = Noneemail: Optional[str] = Noneqq: Optional[str] = NonetimeStamp: intfromType: intmsgType: intmsgSource: intfromWxid: strfromNick: strfinalFromWxid: Optional[str] = NonefinalFromNick: Optional[str] = NoneatWidList: Optional[List[str]] = Nonesilence: intmembercount: intsignature: Optional[str] = Nonemsg: str@huidiao_router.post("/receive_message_huidiao")
async def receive_message(data: CallBackDataEntity):print(f"接收到了回调消息,内容是:{data.dict()}")# 这里可以添加你的业务逻辑return {"message": "success"}@huidiao_router.get("/test_api")
async def test_api():return {"message": "success"}

关键代码,还是那几行,只是名字有所不一样:


from fastapi import APIRouter
huidiao_router = APIRouter()
@huidiao_router.post("/receive_message_huidiao")

下面是在main.py中新增的代码:


from api.api_huidiao import huidiao_router as huidiao_routerapp.include_router(huidiao_router, prefix="/api/huidiao")

接下来我们请求接口:http://127.0.0.1:7582/api/huidiao/test_api,即可。

相关文章:

fastapi中实现多个路由请求

大家伙,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。 前言 最近在写机器人相关的接口,顺手学了学python,发现这是个好东西,写代码效率比java要高很多,比如写个词云呀,写个回调呀&am…...

前端框架选择指南:React vs Vue vs Angular

选择前端框架时,React、Vue 和 Angular 都是流行的选择,各有优缺点。我们可以从各个维度进行比较和选择: React 核心理念: 组件化开发,专注于视图层。学习曲线: 相对平缓,因为重点在于JSX和组…...

猫头虎 解析:为什么AIGC在国内适合做TOB,在国外适合做TOC?

猫头虎 解析:为什么AIGC在国内适合做TOB,在国外适合做TOC? 博主 猫头虎 的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面…...

并发编程笔记8--ThreadLocal结构详解

ThreadLocal,即线程变量,是一个以ThreadLocal对象为键,任意对象为值的存储结构。这个结构被附带在线程上,也就是说一个线程可以根据一个ThreadLocal对象查询到绑定在这个线程上的值。可以通过set(T)方法来设置一个值,在…...

强烈推荐 20.7k Star!企业级商城开源项目强烈推荐!基于DDD领域驱动设计模型,助您快速掌握技术奥秘,实现业务快速增长

更多资源请关注纽扣编程微信公众号 1 项目简介 商城是个从零到一的C端商城项目,包含商城核心业务和基础架构两大模块,推出用户、消息、商品、订单、优惠券、支付、网关、购物车等业务模块,通过商城系统中复杂场景,给出对应解决方案。使用 …...

【C++STL详解(四)------vector的模拟实现】

文章目录 vector各函数接口总览vector当中的成员变量介绍默认成员函数构造函数1构造函数2构造函数3拷贝构造函数赋值运算符重载函数析构函数 迭代器相关函数begin和end 容量和大小相关函数size和capacityreserveresizeempty 修改容器内容相关函数push_backpop_backinserterases…...

租赁系统|北京租赁系统|租赁软件开发流程

在数字化时代的浪潮下,小程序成为了各行各业争相探索的新领域。租赁行业亦不例外,租赁小程序的开发不仅提升了用户体验,更为商家带来了更多商业机会。本文将详细解析租赁小程序的开发流程,为有志于进军小程序领域的租赁行业从业者…...

JAVA面试题大全(十四)

1、Kafka 可以脱离 Zookeeper 单独使用吗?为什么? kafka不能脱离zookper单独使用,因为kafka使用zookper管理和协调kafka的节点服务器。 2、Kafka 有几种数据保留的策略? Kafka提供了多种数据保留策略,这些策略用于定…...

Web Accessibility基础:构建无障碍的前端应用

Web Accessibility(网络无障碍)是确保所有人都能平等访问和使用网站和应用程序的关键。这包括视觉、听觉、运动和认知能力有限的用户。以下是一些构建无障碍前端应用的基础原则和代码示例: 2500G计算机入门到高级架构师开发资料超级大礼包免…...

谈谈你对 SPA 的理解?

1 理解基本概念 SPA(single-page application)单页应用,默认情况下我们编写 Vue、React 都只有一个html 页面,并且提供一个挂载点,最终打包后会再此页面中引入对应的资源。(页面的渲染全部是由 JS 动态进行…...

JAVA给一个JSON数组添加对象

操作Mysql表的json字段,查询json字段的内容,将新增的内容添加到查询的json数组中 String a "[{\"name\": \"张三\", \"age\": 10, \"gender\": \"男\", \"email\": \"123qq.co…...

设计一个完美的用户角色权限表

设计一个完美的用户角色权限表需要考虑系统的安全性、灵活性和可扩展性。以下是一个详细的用户角色权限管理表设计方案,包含多个表结构和字段描述。 目录 1. 用户表(Users Table)2. 角色表(Roles Table)3. 权限表&…...

Git 基本使用

目录 Git 安装与设置 在 Windows上安装 Git git 的配置 Git 原理 git 的四个区域 git 工作流程 git 文件的状态 Git 操作 创建仓库 免密登录 基本操作 版本回退 本地仓库整理 分支命令 合并分支 解决冲突 Git 安装与设置 在 Windows上安装 Git 在 Windows上使…...

LabVIEW使用PID 控制器有哪些应用场景?

如何在LabVIEW中创建PID控制器? LabVIEW为各种控制工程任务提供了内置函数和库,包括PID控制器编程。这些功能位于控制设计和仿真调色板中,其中有用于不同类型控制器的子调色板。要在LabVIEW中创建PID控制器,需要将PID函数从PID子调色板拖放…...

UTC与GPS时间转换-[week, sow]

UTC与GPS时间转换-[week, sow] utc2gpsgps2utc测试参考 Ref: Global Positioning System utc2gps matlab源码 function res utc2gps(utc_t, weekStart)%% parameterssec_day 86400;sec_week 604800;leapsec 18; % 默认周一为一周的开始if nargin < 2weekStart d…...

JVM性能调优:内存模型及垃圾收集算法

JVM内存结构 根据Java虚拟机规范&#xff0c;JVM内存主要划分为以下区域&#xff1a; 年轻代&#xff08;New Generation&#xff09; 包括Eden空间&#xff0c;用于存放新创建的对象。Survivor区由两个相同大小的Survivor1和Survivor2组成&#xff0c;用于存放经过初次垃圾回…...

不靠后端,前端也能搞定接口!

嘿&#xff0c;前端开发达人们&#xff01;有个超酷的消息要告诉你们&#xff1a;MemFire Cloud来袭啦&#xff01;这个神奇的东东让你们不用依赖后端小伙伴们&#xff0c;也能妥妥地搞定 API 接口。是不是觉得有点不可思议&#xff1f;但是事实就是这样&#xff0c;让我们一起…...

如何秒杀Promise面试题

如何秒杀Promise面试题 如果你在面试的时候技术面给你出了点关于Promise的面试题首先不要慌&#xff0c;先问候他爹妈一套问候语&#xff01; 然后切记不要(ps:这是病句别在意!&#x1f923;) 自己想 找他要纸和笔 首先关于promise的面试题无非就是 promise 的状态和宏队列、…...

linux文件权限常用知识点,基于Linux(openEuler、CentOS8)

目录 知识点常用实例 知识点 真实环境文件显示 解读 常用实例 文件所有者 chown -R nginx:nginx /home/source目录权限(R选填必须大写<遍历子文件夹及文件>) chmod -R 755 /home/sourcechmod -R 777 /home/source...

【前端笔记】记录一个能优化Echarts Geo JSON大小的网站

前端在使用Echarts等可视化图表库会不可避免遇到的问题&#xff0c;渲染地图的数据太大。 而有那么一个网站能给予这个问题一个解决方案&#xff1a;链接在此 使用方法很简单&#xff0c;首先先进入网站&#xff0c;如果进入了会是这个页面&#xff1a; 接着&#xff0c;选择一…...

top50 BF16算力(TFLOPS) 显卡排行榜 天梯图

排名显卡型号BF16算力(TFLOPS)售价(元)单TFLOPS价格(元)1B200(SXM)45002200000488.892H200(SXM)19801200000606.063MI300X1307750000573.834H100 SXM519501100000564.105RTX PRO 6000 Blackwell1150780000678.266H100 PCIe 80GB1560850000544.877RTX 50906803400050.008A100 80…...

用Python+OpenCV手把手实现Prewitt边缘检测(附完整代码与效果对比图)

用PythonOpenCV手把手实现Prewitt边缘检测&#xff08;附完整代码与效果对比图&#xff09; 边缘检测是计算机视觉中最基础也最关键的预处理步骤之一。想象一下&#xff0c;当你需要让计算机"看清"一张照片中的物体轮廓时&#xff0c;边缘检测算法就是它的"视觉…...

BetterJoy完整配置指南:5分钟让Switch手柄在PC上完美运行

BetterJoy完整配置指南&#xff1a;5分钟让Switch手柄在PC上完美运行 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcode.c…...

Windows 10/11系统下,SecureCRT 8.7.2保姆级安装与激活图文指南(含Keygen使用避坑点)

Windows平台SecureCRT 8.7.2全流程部署与安全配置指南在当今远程运维与网络管理的日常工作中&#xff0c;一款可靠的终端仿真工具如同工程师的瑞士军刀。作为行业标杆的SecureCRT&#xff0c;其8.7.2版本在Windows 10/11环境下的部署却常让新手陷入各种技术陷阱——从安装路径选…...

Linux服务器被挖矿木马劫持的五步应急处置指南

1. 这不是“中病毒”&#xff0c;是服务器被劫持成了矿机——先别慌&#xff0c;但必须立刻断网“服务器被黑客攻击&#xff0c;用来挖矿&#xff01;”——这句话在运维圈里一出&#xff0c;比收到OOM告警还让人头皮发紧。它不像网页被挂马、数据库被拖库那样有明显业务影响&a…...

基于MaixCam的延时摄影系统:从硬件选型到Python编程全解析

1. 项目概述&#xff1a;用MaixCam打造你的专属延时摄影工坊延时摄影&#xff0c;这个听起来有点专业、甚至带点“魔法”色彩的词&#xff0c;其实离我们并不遥远。想想看&#xff0c;把一朵花从含苞到绽放的几天时间&#xff0c;压缩成十几秒的惊艳绽放&#xff1b;或者把一座…...

可解释AI新突破:基于局部帕累托最优的模型解释框架

1. 项目概述&#xff1a;当AI模型成为“黑箱”&#xff0c;我们如何撬开它&#xff1f;在机器学习项目里摸爬滚打十几年&#xff0c;我见过太多这样的场景&#xff1a;团队花大力气训练出一个准确率高达95%的复杂模型&#xff08;比如深度神经网络&#xff09;&#xff0c;业务…...

BiliRoamingX:彻底解决B站体验限制的完整增强方案

BiliRoamingX&#xff1a;彻底解决B站体验限制的完整增强方案 【免费下载链接】BiliRoamingX-integrations BiliRoamingX integrations and patches powered by ReVanced. 项目地址: https://gitcode.com/gh_mirrors/bi/BiliRoamingX-integrations 你是否曾为B站的内容区…...

因果推断与机器学习融合:量化分析社会运动中镇压与抗议的动态关系

1. 项目概述&#xff1a;当数据科学遇见社会运动如果你研究过社会运动&#xff0c;尤其是那些看似突然爆发、席卷全国的抗议浪潮&#xff0c;你可能会被一个核心问题困扰&#xff1a;国家机器的镇压&#xff0c;究竟是浇灭火焰的冷水&#xff0c;还是火上浇油的催化剂&#xff…...

通过TaotokenCLI工具一键配置开发环境接入参数

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过Taotoken CLI工具一键配置开发环境接入参数 对于需要接入多个大模型服务的开发者而言&#xff0c;手动配置每个项目的API密钥、…...