wdcp搭建网站教程,中国石油大学网页设计与网站建设,建立健全制度,莆田网站建设制作大家伙#xff0c;我是雄雄#xff0c;欢迎关注微信公众号#xff1a;雄雄的小课堂。 前言
最近在写机器人相关的接口#xff0c;顺手学了学python#xff0c;发现这是个好东西#xff0c;写代码效率比java要高很多#xff0c;比如写个词云呀#xff0c;写个回调呀我是雄雄欢迎关注微信公众号雄雄的小课堂。 前言
最近在写机器人相关的接口顺手学了学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: strhuidiao_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,即可。