【web】Fastapi自动生成接口文档(Swagger、ReDoc )
简介
FastAPI是流行的Python web框架,适用于开发高吞吐量API和微服务(直接支持异步编程)
FastAPI的优势之一:通过提供高级抽象和自动数据模型转换,简化请求数据的处理(用户不需要手动处理原始请求数据),并能根据路由和 Pydantic 模型自动生成 OpenAPI 接口文档。
- Swagger UI
- ReDoc
demo
import uuid
import uvicorn
from typing import Any, Union, Optional
from typing_extensions import Literal
from fastapi import Body, FastAPI
from pydantic import (BaseModel,Field,UUID4
)app = FastAPI()class UserIn(BaseModel):channel: Literal[0, 1] = Field(0, title="渠道")username: str = Field(..., title="用户名")password: str = Field(..., title="用户密码", description="长度6-8位")email: str = Field(..., title="用户邮箱地址")full_name: str = Field(None, title="用户全名")request_id: Optional[UUID4]class UserOut(BaseModel):username: str = Field(..., title="用户名")email: str = Field(..., title="用户邮箱地址")full_name: str = Field(None, title="用户全名")request_id: Optional[UUID4]# FastAPI will take care of filtering out all the data that is not declared in the output model (using Pydantic).
# 因此,FastAPI将负责过滤掉输出模型中未声明的所有数据(使用Pydantic)。@app.post("/user/", response_model=UserOut)
async def create_user(user: UserIn = Body(examples={"example1": {"summary": "A short summary or description of the example","value": {# example data here"channel": 0,"username": "Foo","password": "33759","email": "chencare@163.com","full_name": "xiaotao"}}})
) -> UserOut:user.request_id = uuid.uuid4()print(user.request_id)return userif __name__ == '__main__':uvicorn.run(app=app, access_log=True, port=9988)
运行后,会提示Uvicorn running on http://127.0.0.1:9988 (Press CTRL+C to quit)

在浏览器输入http://127.0.0.1:9988/redoc( ReDoc),http://127.0.0.1:9988/docs(Swagger UI )即可查看
ReDoc 页面如下:

ReDoc vs. Swagger UI
ReDoc更美观,Swagger UI更注重交互(用户直接从界面中发送请求,查看响应,这对于测试和调试 API 非常有用。)
相关文章:
【web】Fastapi自动生成接口文档(Swagger、ReDoc )
简介 FastAPI是流行的Python web框架,适用于开发高吞吐量API和微服务(直接支持异步编程) FastAPI的优势之一:通过提供高级抽象和自动数据模型转换,简化请求数据的处理(用户不需要手动处理原始请求数据&am…...
竞赛选题 题目:基于FP-Growth的新闻挖掘算法系统的设计与实现
文章目录 0 前言1 项目背景2 算法架构3 FP-Growth算法原理3.1 FP树3.2 算法过程3.3 算法实现3.3.1 构建FP树 3.4 从FP树中挖掘频繁项集 4 系统设计展示5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 基于FP-Growth的新闻挖掘算法系统的设计与实现…...
188. 股票买卖问题(交易次数为任意正整数)
题目 题解 class Solution:def maxProfit(self, k: int, prices: List[int]) -> int:N len(prices)# 定义状态:dp[i][j][k]表示在第i天,有j次交易机会,持有或不持有的最大利润dp [[[0 for i in range(2)] for j in range(k1)] for m in range(N)]f…...
Typescript怎样对URL参数进行编码?
URL中的参数需要进行编码(URL encoding)是为了确保传输的参数不包含特殊字符,同时确保数据的可靠性和安全性。 特殊字符如空格、&、?等在URL中有特殊含义,如果直接包含在参数值中,可能会导致解析错误或者安全问题…...
AndroidStudio2022.3.1 Patch3使用国内下载源加速
记录一下这个版本的as在使用国内下载源加速碰到的诸多问题。 一、gradle-8.0-bin.zip下载慢 编辑项目文件夹/gradle/wrapper/gradle-wrapper.properties,文件内容改为如下: #Fri Nov 24 18:50:06 CST 2023 distributionBaseGRADLE_USER_HOME distribu…...
Go语言的学习笔记2——Go语言源文件的结构布局
用一个只有main函数的go文件来简单说一下Go语言的源文件结构布局,主要分为包名、引入的包和具体函数。下边是main.go示例代码: package mainimport "fmt"func main() { fmt.Println("hello, world") }package main就是表明这个文件…...
python给视频增加字幕
python给视频增加字幕 安装所需库 在开始之前,我们需要安装一些Python库。主要使用到的库如下: moviepy:用于处理视频和音频的库。 pydub:用于处理音频的库。 speech_recognition:用于语音识别的库。 首先࿰…...
相机设置参数:黑电平(Black Level)详解和示例
本文通过原理和示例对相机设置参数“黑电平”进行讲解,以帮助大家理解和使用。 原理 相机中黑电平原理是将电平增大,可以显示更多暗区细节,可能会损失一些亮区,但图像更多的关注暗区,获取完图像信息再减掉。只是为了…...
Mac Ubuntu双系统解决WiFi和WiFi 5G网络不可用问题
文章目录 设备信息1. Ubuntu WiFi不可用解决方式查看Mac的网卡型号根据网卡型号搜索获取到的解决方法查看WiFi名字问题参考链接 2. 解决WiFi重启后失效问题打开终端创建.sh脚本文件编辑脚本文件复制粘贴脚本修改脚本权限创建并编辑systemd service文件复制粘贴下文到systemd se…...
数据分析基础之《matplotlib(2)—折线图》
一、折线图绘制与保存图片 1、matplotlib.pyplot模块 matplotlib.pyplot包含了一系列类似于matlab的画图函数。它的函数作用于当前图形(figure)的当前坐标系(axes) import matplotlib.pyplot as plt 2、折线图绘制与显示 展示城…...
Rust语言入门教程(三) - 函数与模块系统
函数 函数的定义 根据Rust的格式规范,函数名的格式应遵从蛇形命名法,即是用小写字母以及下划线组成,如: fn do_stuff(){ }Rust并不要求函数定义的位置必须在调用它之前,所以如果你习惯于把main函数放在最前面的话&a…...
ubuntu22.04 arrch64版在线安装java环境
脚本 #安装java#!/bin/bashif type -p java; thenecho "Java has been installed."else#2.Installed Java , must install wgetwget -c https://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-arm64-vfp-hflt.tar.gz;tar -zxvf ./jdk-8u151-linux-arm6…...
概率论与数理统计中常见的随机变量分布律、数学期望、方差及其介绍
1 离散型随机变量 1.1 0-1分布 设随机变量X的所有可能取值为0与1两个值,其分布律为 若分布律如上所示,则称X服从以P为参数的(0-1)分布或两点分布。记作X~ B(1,p) 0-1分布的分布律利用表格法表示为: X01P1-PP 0-1分布的数学期望E(X) 0 *…...
骨传导耳机的优缺点都有哪些?骨传导耳机值得入手吗?
骨传导耳机的优点还是很多的,相比于传统耳机,骨传导耳机要更值得入手! 下面让我们了解下骨传导耳机的优缺点都有哪些: 一、优点 1、使用更安全 传统的耳机,在使用时会听不到外界的声音,而骨传导耳机通过…...
在ASP.NET Core 中使用 .NET Aspire 消息传递组件
前言 云原生应用程序通常需要可扩展的消息传递解决方案,以提供消息队列、主题和订阅等功能。.NET Aspire 组件简化了连接到各种消息传递提供程序(例如 Azure 服务总线)的过程。在本教程中,小编将为大家介绍如何创建一个 ASP.NET …...
NLP学习
参考:NLP发展之路I - 从词袋模型到Transformer - 知乎 (zhihu.com) NLP大致的发展历史。从最开始的词袋模型,到RNN,到Transformers和BERT,再到ChatGPT,NLP经历了一段不断精进的发展道路。数据驱动和不断完善的端到端的…...
Linux-Ubuntu环境下搭建SVN服务器
Linux-Ubuntu环境下搭建SVN服务器 一、背景二、前置工作2.1确定IP地址保持不变2.2关闭防火墙 三、安装SVN服务器四、修改SVN服务器版本库目录五、调整SVN配置5.1查看需要修改的配置文件5.2修改svnserve.conf文件5.3修改passwd文件,添加账号和密码(window…...
python tkinter使用(四)
本篇文章主要讲下tkinter 的文本框相关. tkinter中用Entry来实现输入框,类似于android中的edittext. 具体的用法如下: 1:空白输入框 如下: name tk.Entry(window) name.pack()2: 设置输入框的默认文案 name tk.Entry(window) name.pack() name.insert(tk.END, "请…...
记录ruoyi-plus-vue部署的问题
ruoyi-vue-plus5.x 后端 ruoyi-vue-plus5.x 前端 前端本地启动命令 # 克隆项目 git clone https://gitee.com/JavaLionLi/plus-ui.git# 安装依赖 npm install --registryhttps://registry.npmmirror.com# 启动服务 npm run dev# 构建生产环境 yarn build:prod # 前端访问地址…...
如何在springboot项目中使用minio上传下载删除文件
引入maven依赖 <!-- minio --> <dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.2.2</version> </dependency>申请 bucket | access_key | secret_key 项目中配置相关参数 mini…...
空洞骑士模组管理器Scarab终极指南:5分钟学会所有模组管理技巧
空洞骑士模组管理器Scarab终极指南:5分钟学会所有模组管理技巧 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 还在为空洞骑士模组安装的复杂流程而烦恼吗…...
RTX 30系显卡救星:保姆级教程搞定Windows下TensorFlow 2.4.0 GPU环境(含Pillow版本避坑)
RTX 30系显卡救星:保姆级教程搞定Windows下TensorFlow 2.4.0 GPU环境(含Pillow版本避坑) 最近在帮同事配置TensorFlow 2.4.0 GPU环境时,发现30系显卡用户遇到的坑比想象中多得多。特别是那些看似莫名其妙的报错,比如&q…...
库克超长待机15年后卸任,硬件老兵特努斯接棒,苹果AI之路何去何从?
【库克退休计划与超长任期】这是一场事先铺垫的退休计划。至少五年前库克就曾公开表示过自己「未来十年内不打算继续任职」,此后每隔一段时间,关于「库克候选人」的传闻就不断会被媒体们拿出来反复讨论。在随后苹果全体大会上,他甚至说&#…...
CVRPTW问题的高效图粗化解法与实践
1. 带时间窗车辆路径问题的图粗化解法解析在物流配送和运输调度领域,带时间窗的容量约束车辆路径问题(CVRPTW)一直是个令人头疼的难题。想象一下,你管理着一个大型配送中心,每天需要安排数十辆货车为数百个客户送货。每…...
第7篇:抽象基类(ABC)与接口设计
为什么需要抽象基类? 在大型系统中,我们经常需要定义一组接口,要求子类必须实现某些方法。抽象基类(Abstract Base Class, ABC)正是为此而生。它可以: 定义抽象方法(没有实现的方法),强制子类实现。 禁止实例化不完整的类。 提供部分通用实现。 定义抽象基类 Python…...
005、PCIE拓扑结构:点对点、交换与层次
005、PCIE拓扑结构:点对点、交换与层次 上周调一块板子,系统里两个NVMe盘,一个死活识别不到。查了半天,发现RC(Root Complex)出来的那条链路配置成了x8,但下游接了个x4的盘,再往下又…...
ESP32-S3驱动3.5寸TFT触摸屏开发指南
1. Makerfabs 3.5寸TFT触摸屏深度解析 这款由Makerfabs推出的3.5英寸TFT触摸屏显示模块,集成了ESP32-S3双核处理器和电容式触摸功能,为嵌入式GUI开发提供了完整的硬件解决方案。我在实际项目中使用过类似规格的显示模块,可以确认其性能确实能…...
V4L2调试不止抓图:手把手教你用media-ctl画拓扑、查事件、控马达
V4L2调试进阶:从拓扑解析到硬件控制的深度实践 在嵌入式视觉系统开发中,V4L2框架作为Linux生态的核心组件,其调试能力往往被简化为基础的格式设置和图像捕获。但当你面对多摄像头协同工作、ISP链路异常或马达控制失效等复杂场景时,…...
为什么92%的.NET团队在AOT迁移中失败?揭秘C# 14原生AOT部署Dify客户端的7个隐性陷阱
第一章:C# 14 原生 AOT 部署 Dify 客户端架构设计图C# 14 的原生 AOT(Ahead-of-Time)编译能力为构建轻量、安全、跨平台的 Dify 客户端提供了全新范式。该架构摒弃运行时 JIT 编译与完整 .NET 运行时依赖,将客户端代码直接编译为独…...
AixProbe开源AI远程调试器:第1章 硬件讲解
项目简介 AixProbe 是一款开源 AI 远程调试器,专为嵌入式开发者的远程调试场景设计。它集成了 JTAG/SWD 调试、多路串口通信、ADB 调试、USB 扩展等能力,并通过 AI 辅助提升远程调试效率。 本文为系列教程的第一章,带你全面了解 AixProbe 的硬…...
