python编写的多个FastApi接口如何批量运行

fastapi编写接口并批量运行
为什么要写这fastapi接口以及拿它做什么呢?

fastapi可以快速构建你自己的api,前端后端联调时,后端接口还有做好,那么这个fastapi可以快速生成mock一些数据。
结合uvicorn这个python库使用起来很方便
为接口自动化研究做demo接口,专门拿来作为接口postman调试。

**目录结构如下:
在这里插入图片描述
其中user.py的内容如下

#没有导入FastAPI,,而是导入APIRouter,这个是方便可以运行多个fastapi的app应用
from fastapi import APIRouter
import uvicorn
# typing和pydantic是用于请求参数的控制的
from typing import Optional
from pydantic import BaseModel


router = APIRouter(tags=["fastApi_01"], responses={404: {"description": "Not found"}})

# 定义输入的请求参数
class Car(BaseModel):
    name: str  # 必选 名字
    weight: Optional[str] = None  # 可选参数
    price: float  # 必选参数
    length: Optional[str] = None  # 可选参数

# 定义接口的输入请求参数
class deskTop(BaseModel):
    name: str #颜色
    color: str #颜色
    length: str #长度
    tiji: Optional[int] = None #体积可选

@router.post("/car")
def create_item(car : Car):
    return {"code": 200, "msg": "新增成功", "data": car}

@router.post("/desktop")
def create_item2(desktop : deskTop):
    return {"code": 200, "msg": "新增成功", "data": desktop}

@router.get("/")
def index():
    return {"city": "chengdu"}

@router.get("/list")
def list():
    return ["one", "two", "three"]

@router.get("/user/list")
def getList_user():
    #返回用户列表
    return {"code": 1, "msg": "修改成功", "data": [
        {"id": 1, "username": "wangjie", "age": 21},
        {"id": 2, "username": "wanghao", "age": 12},
        {"id": 3, "username": "liubo", "age": 31},
        {"id": 4, "username": "zhangxinhua", "age": 76},
        {"id": 5, "username": "liuneng", "age": 65}
    ]}

@router.post("/user/{id}")
def user(id):
    return {"code": 1, "msg": "新增成功", "id": id}

@router.put("/user")
def update(id,name):
    if id==1:
        return {"code": 1, "msg": "修改成功", "id": id, "name": name}
    else:
        return {"code": 0, "mag": "未找到结果"}

@router.delete("/user")
def delete_user(id):
    return {"code": 1, "msg": "删除成功", "data": {"id": id}}

# if __name__ == '__main__':
#     uvicorn.run(app)
    # 在终端terminal中使用uvicorn重启
    # 终端输入:uvicorn --reload 文件名:app的名称 比如:uvicorn main:app --reload


fastApi_02.py文件模块的内容如下:

from fastapi import APIRouter
import uvicorn
# typing和pydantic是用于请求参数的控制的
from typing import Optional
from pydantic import BaseModel


router = APIRouter(tags=["fastApi_02"], responses={404: {"description": "Not found"}})

class Station:
    id: int # 基站为int 的id
    name: str #基站名称
    addr: str #定位地址
    status: bool #是否在线 1-true, 不在线为0-false

@router.get("/station/list")
def getStation_list():
    return {"code": 1, "msg": "查询列表成功", "data": [
        {"id": 1001, "name": "基站1", "addr": "成都双流区二楼1号南", "status": True},
        {"id": 1002, "name": "基站2", "addr": "成都双流区二楼2号北", "status": False},
        {"id": 1003, "name": "基站3", "addr": "成都双流区二楼3号东", "status": True},
        {"id": 1004, "name": "基站4", "addr": "成都双流区二楼4号西", "status": False},
        {"id": 1005, "name": "基站5", "addr": "成都双流区二楼5号东", "status": True}
    ]}

@router.post("/station")
def add_station():
    return {"code": 1, "msg": "新增基站成功", "data": {"name": "基站1", "type": "A"}}

@router.put("/station")
def update_station():
    return {"code": 1, "msg": "更新基站成功", "data": {
        "id": 1002,
        "name": "基站2",
        "addr": "四川省体育馆",
        "status": True
    }}

@router.delete("/station")
def del_station():
    return {"code": 1, "msg": "删除基站成功", "data": {}}

# if __name__ == '__main__':
#     uvicorn.run(app)

最终呢,只要运行main.py即可访问fastApi_01和fastApi-02的相关接口了。
main/main.py:

import os
from app.routers import fastApi_01, fastApi_02
from fastapi import FastAPI
# from mongoengine import *
# 这里不需要使用mangodb数据库
# connect("test_fastapi", host='localhost', port=27017)

app = FastAPI()

app.include_router(fastApi_01.router)
app.include_router(fastApi_02.router)

在cmd项目根目录下或是terminal终端(如是虚拟环境,切换到虚拟环境运行),运行代码:

#指定host和port运行,main.main是模块main下边的main.py文件,app是对应的FastAPI的对象实例,reload是每次更新代码后自动重新启动。
uvicorn main.main:app --reload --host=192.168.x.x --port=52123

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

找不到mfc140u.dll怎么修复,mfc140u.dll丢失的多种修复方法

计算机丢失mfc140u.dll文件会导致依赖该文件的软件无法正常运行。mfc140u.dll是Microsoft Visual C 2015的可再发行组件之一,它属于Microsoft Foundation Class (MFC) 库,许多使用MFC开发的程序需要这个DLL文件来正确执行。丢失了mfc140u.dll文件。会导致…

解锁最强比较工具Beyond_Compare十大功能及下载注册

Beyond Compare是一款功能强大的文件和文件夹比较工具,以下是其十大用法: 文件内容比较: Beyond Compare能够详细比较两个文件的内容,以绿色表示添加的内容,红色表示删除的内容,黄色表示修改的内容。 用户…

2732. 找到矩阵中的好子集

题目 给你一个下标从 0 开始大小为 m x n 的二进制矩阵 grid。 从原矩阵中选出若干行构成一个行的非空子集,如果子集中任何一列的和至多为子集大小的一半,那么我们称这个子集是好子集。 更正式的,如果选出来的行子集大小(即行的…

【语义分割】1-标注数据集-【单张图片】labelme标注json文件转mask

声明:我学习了b站:标注自己的语义分割数据集_哔哩哔哩_bilibili 并且复现了,记录了所思所得。 主要是说了: 做语义分割,数据集怎么用labelme标注成json文件,以及,json文件怎么转成mask 流程…

qlv格式转换成mp4格式,qlv转换成mp4格式软件工具转换器

在当今的互联网时代,视频格式转换已成为我们日常生活中的一项常见任务。其中,qlv转MP4的需求尤为突出,本文将详细介绍qlv转MP4的几种方法,帮助大家转换视频格式,我们一起来看下。 方法一: 1、使用 "小…

解决ubuntu18.04 安装vscode 报依赖库错误,以及打不开终端的问题。

其实很简单,ubuntu18.04太老了,官网最新版本的vscode对ubuntu18.04会有些依赖库的问题。 一顿查资料后发现2023.11月的1.85版本正常使用,于是完美解决。 下载链接 Visual Studio Code November 2023 点击这里下载。 下载完成,…

Verilog进行结构描述(structural modeling)(一):基本概念

目录 1.结构描述(structural modeling)的内容:2.实例 微信公众号获取更多FPGA相关源码: 1.结构描述(structural modeling)的内容: 用门来描述器件的功能基于基本元件和底层模块例化语句最接近实际的硬件结构主要使用元件的定义、使用声明以…

DCT-Net - 一键图片、视频转卡通动漫风格工具,本地一键整合包下载

只需要输入一张人物图像或者一段视频,就可以实现端到端全图卡、视频通化转换,生成二次元虚拟形象,返回卡通化后的结果图像或视频。 开发者叫menyi Fang,来自阿里巴巴通义实验室的的技术女大佬,国内大佬集成到webui&am…

基于SpringBoot的“智慧食堂”管理系统设计与实现

你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。 开发语言:Java 数据库:MySQL 技术:SpringBootVue 工具:IDEA/Eclipse、Navicat、Maven 系统展示 首页 用户管理界面 菜品…

写一个坏越的个人天地(三)

昨天卡巴卡巴还是投出了学习代码以来的第一份简历,遇到好的岗位还是想争取下的吧,虽然我觉得大概率还是gg了。 昨天完成了首页的上半部分 下半部分我的构思是左右栏,左侧为菜单栏,右侧为业务栏,左侧调整右侧router进行切换内容 可以用来展示js css的小demo 稍微调整下ro…

PointCloudLib-滤波模块(Filtering)-使用体素网格过滤器对点云进行降采样

在本教程中,我们将学习如何缩减采样——即减少数量 点 – 使用体素化格网方法的点云数据集。 我们将要介绍的类在输入上创建一个 3D 体素网格(将体素网格视为空间中的一组微小 3D 框) 点云数据。然后,在每个体素(即 3D 框)中,所有点都存在 将用它们的质心近似(即下采样…

Linux驱动开发笔记(十一)tty子系统及其驱动

文章目录 前言一、串口驱动框架1.1 核心数据结构1.2 数据处理流程 二、驱动编写1. 设备树的修改2. 相关API函数3. 驱动框架4. 具体功能的实现4.1 出入口函数的编写4.2 读写函数 前言 之前已经讲过应用层的应用,接下来我们继续进行驱动的学习。其实实际上我们很少主动…

Linux显示服务器Wayland切换到X11

1、临时切换 : 注销当前用户账户,返回到登录屏幕。 在登录屏幕上,选择您要登录的用户账户。 在输入密码之前,在登录屏幕的右下角可能有一个齿轮图标,点击它以展开更多选项。 在选项中选择“Ubuntu on Xorg”或“Ubu…

从0开始学做质量工程师,只需6个月成为专业的质量管理者

欢迎来到优思学院的特别讲座——从零开始学质量工程师,只需6个月!在这篇博客中,我们将分享满满的干货,帮助你在短时间内掌握成为质量工程师所需的知识和技能。无论你是刚踏入职场的新人,还是希望提升自身竞争力的在职人…

【ACM出版】第13届亚洲膜计算会议(ACMC2024)暨 2024年机器学习、模式识别与自动化工程国际学术会议(MLPRAE 2024,8月7日-9)

第13届亚洲膜计算会议(ACMC2024)暨2024年机器学习、模式识别与自动化工程国际学术会议(MLPRAE 2024) 将于2024年8月7日-9日在新加坡举行。它致力于为机器学习、模式识别与自动化工程领域的专家和学者之间的学术交流创造一个平台。 会议的理念是让来自世…

寄存器组(堆栈指针寄存器小解)

寄存器组(堆栈指针寄存器小解) 寄存器组栈是向下伸长的出入栈操作时候的SP寄存器 例子 寄存器组 主堆栈指针(MSP):这是缺省的堆栈指针,它由 OS 内核、异常服务例程以及所有需要特权访问的 应用程序代码来使…

kubernetes pod 最小可部署计算单元

1 工作负载(workloads) 工作负载(workload)是在kubernetes集群中运行的应用程序。无论你的工作负载是单一服务还是多个一同工作的服务构成,在kubernetes中都可以使用pod来运行它。 workloads分为pod与controllers p…

Mysql中varchar类型数字排序不对踩坑记录

场景 在进行表设计时将版本号字段设计了为varchar类型,尽量从表设计阶段将数字类型列设计为int型。 再进行排序时如果版本号累计到了10及以上,那么再进行排序时则会出现问题。 比如下面执行排序时发现10被排在了第一位。 这是因为 varchar类型对数字…

数据增强 data augmentation(在PyTorch中,data_transforms通常用于数据集处理,并且经常用于数据增强)

数据增强是一种在训练深度学习模型时,通过对输入数据进行变换和修改的方法,以增加训练数据集的大小和多样性,从而提高模型的泛化能力和性能。 PS: PyTorch中,data_transforms具体使用代码可以查看这篇文章: pytor…