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

news2024/10/10 4:26:55

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

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

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

相关文章

【Python实战因果推断】1_因果效应异质性1

目录 From ATE to CATE Why Prediction Is Not the Answer CATE and ITE 本文将介绍应用于行业的因果推理中最有趣的发展:效应异质性。在此之前,你们了解的是一种治疗方法的一般影响。现在,你将专注于发现它如何对不同的人产生不同的影响。…

【漏洞复现】用友 UFIDA saveDoc.ajax 任意文件上传漏洞

免责声明: 本文内容旨在提供有关特定漏洞或安全漏洞的信息,以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步,并非出于任何恶意目的。阅读者应该明白,在利用本文提到的漏洞信息或进行相关测…

web前端大作业-乡村扶贫、乡村振兴

文章目录 代码分析页面截图代码连接 代码分析 代码结构 主页index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta…

基于RabbitMQ原理的自定义消息队列实现

文章目录 1. 什么是消息队列2. 需求分析2.1. 核心概念12.2. 核心概念22.3. 核心API2.4. 交换机类型2.5. 持久化2.6. 网络通信2.7. 总结 3. 创建核心类3.1. Exchange3.2. MSGQueue3.3. Binding3.4. Message3.5. 数据库操作3.5.1. 建表操作3.5.2. 交换机操作3.5.3. 队列操作3.5.4…

力扣62 不同路径

一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路径&#xff1f; 输入&…

智能终端-Qt-课程设计分析

这个是几个简单的Qt的智能终端分享&#xff0c;其是我们上课的作业&#xff0c;我就在老师要求的基础上去进行了延申了一点的&#xff0c;下面看做了哪些东西 这个是所有的点开之后的页面&#xff0c;我做到了那些家居和那个按钮达到了同步的效果&#xff0c;这点其实还是不错…

仿真模拟--静态浮动路由

目录 静态路由 浮动路由 静态路由 浮动路由

Linux CentOS 环境 MySQL 主从复制集群搭建

环境说明 MySQL版本8.4.0 操作系统 Linux CentOS 7.9 官网文档 https://dev.mysql.com/doc/refman/8.4/en/replication-configuration.html 以下代码片段中带分号都是在MySQL命令行( mysql -uroot -p)中执行 1. 首先在两个节点上安装数据库 参考 Linux CentOS安装MySQL8.0 …

如何把图片转换成pdf格式?图片转PDF方法分享

如何把图片转换成pdf格式&#xff1f;图片转换为PDF格式的重要性不言而喻。PDF文件不仅能够在各种操作系统和设备上保持一致的显示效果&#xff0c;还能确保图片内容的清晰度和质量不受损害。此外&#xff0c;PDF格式支持加密和权限设置&#xff0c;可以保护图片内容不被轻易篡…

C#——SortedList 排序列表详情

SortedList 排序列表 SortedList 类用来表示键/值对的集合&#xff0c;这些键/值对按照键值进行排序&#xff0c;并且可以通过键或索引访问集合中的各个项。 我们可以将排序列表看作是数组和哈希表的组合&#xff0c;其中包含了可以使用键或索引访问各项的列表。如果您使用索…

centOS 7安装gitlab

主要参考&#xff1a; CentOS-7 下 GitLab 安装部署教程_centos7 安装gitlab-CSDN博客 但是由于我本身服务器配置很小(2核2G)&#xff0c;所以运行的时候报错&#xff1a; execute[clear the gitlab-rails cache] (gitlab::gitlab-rails line 561) had an error: Mixlib::Sh…

【Linux】静态库、动态库

动静态库里面包含的是源文件通过汇编阶段生成的后缀为.o的可重定位目标文件。我们在使用C语言&#xff0c;包含一个stdio.h头文件就可以使用scanf方法&#xff0c;其实都是系统调用了相应的头文件和库&#xff0c;库里面有开发者已经写好各种方法。也就是说我们在使用C语言时&a…

laravel的日志使用说明

文章目录 了解系统的默认支持多个通道时它们的关系如何使用驱动 了解系统的默认支持 Laravel 日志基于「 通道 」和 「 驱动 」的。那么这个通道是干嘛的&#xff1f;驱动又是干嘛的&#xff1f; 通道 &#xff1a; 1.它表示了某种日志格式化的方式&#xff08;或可理解为某个…

正版软件 | 『闪点清单』— 您的智能悬浮任务管理专家

在繁忙的日常中&#xff0c;我们经常需要一个既能随时提醒&#xff0c;又不会打扰我们的待办事项管理工具。『闪点清单』&#xff0c;一款简约而不简单的悬浮清单软件&#xff0c;为您带来全新的任务管理体验。 设计简约&#xff0c;功能强大 『闪点清单』以其简约的设计和强大…

【2024最新版】Eclipse安装配置全攻略:图文详解

目录 1. Eclipse介绍1.1 背景1.2 主要特点和功能1.3 版本发布1.4 优势与劣势 2. 下载Eclipse3. 安装Eclipse4. 启动Eclipse 1. Eclipse介绍 Eclipse是一个开源的、基于Java的可扩展开发平台&#xff0c;主要用于Java开发者&#xff0c;但也支持其他语言如C/C、PHP、Python等。…

Webpack: 前端资深构建工具

概述 如果你是一名前端工程师&#xff0c;相信之前或多或少听过、用过 Webpack 这一构建工具&#xff0c;它能够融合多种工程化工具&#xff0c;将开发阶段的应用代码编译、打包成适合网络分发、客户端运行的应用产物如今&#xff0c;Webpack 已经深深渗入到前端工程的方方面面…

OCR训练和C#部署英文字符训练

PaddleOCR是一个基于飞桨开发的OCR&#xff08;Optical Character Recognition&#xff0c;光学字符识别&#xff09;系统。其技术体系包括文字检测、文字识别、文本方向检测和图像处理等模块。以下是其优点&#xff1a; 高精度&#xff1a;PaddleOCR采用深度学习算法进行训练…

基于Cisco的校园网络拓扑搭建

特此说明&#xff1a;请先看评论区留言哦~ 一、基础配置 1.新建拓扑图 2.服务器配置 3.PC端配置 4.核心交换机配置 a.CORE-S1 Switch>enable Switch#configure terminal Switch(config)#hostname CORE-S1 CORE-S1(config)#vlan 10 CORE-S1(config-vlan)#vlan 20 CO…

【低功耗设计】功耗模型和PTPX功耗分析流程

本文目录 功耗的构成1.静态功耗2.动态功耗1&#xff09;内部功耗&#xff08;internal power&#xff09;2&#xff09;翻转功耗&#xff08;switch power&#xff09; 功耗的分析功耗分析流程averaged power analysistime-based power analysis 从芯片设计到芯片量产的过程中功…

论文导读 | Manufacturing Service Operations Management近期文章精选

编者按 在本系列文章中&#xff0c;我们梳理了顶刊Manufacturing & Service Operations Management5月份发布有关OR/OM以及相关应用的文章之基本信息&#xff0c;旨在帮助读者快速洞察行业/学界最新动态。 推荐文章1 ● 题目&#xff1a;Robust Drone Delivery with Weath…