day0.5 fastapi项目及路径参数
一、FastAPI 项目认识1. 创建main.py文件FastAPI 项目的核心入口文件是main.py我们在这里创建应用实例并定义路由python运行# 步骤1: 从 fastapi 包中导入 FastAPI 类 # FastAPI 是一个类我们用它来创建 Web 应用的核心对象 from fastapi import FastAPI # 步骤2: 创建 FastAPI 类的实例 # 这个 app 对象就是整个 Web 应用后续所有的路由、配置都挂载在它上面 # 括号里的参数是可选的用于给自动生成的 API 文档添加标题、描述和版本号 app FastAPI( title我的 FastAPI 应用, # 文档标题 descriptionDay01 入门示例, # 文档描述 version0.1.0 # 应用版本 ) # 步骤3: 定义路由 —— 告诉服务器“当有人访问某个 URL 时执行哪个函数” # app.get(/) 是一个装饰器 (Decorator) # 它表示: 当客户端使用 GET 方法访问根路径 / 时触发下面这个函数 app.get(/) async def read_root(): 这是一个异步的视图函数也叫路径操作函数。 为什么要用 async def? - 因为 Web 服务经常需要等待数据库查询、网络请求等 I/O 操作。 - 使用异步函数可以让服务器在等待期间去处理其他请求提高并发能力。 返回值: - 直接返回一个 Python 字典FastAPI 会自动把它转换成 JSON 格式的字符串 并返回给客户端。 return {message: Hello World}2. 启动服务器在终端中执行以下命令来启动开发服务器bash运行uvicorn main:app --reload或者指定主机和端口bash运行uvicorn main:app --host 127.0.0.1 --port 8000 --reload命令详解uvicornASGI 服务器程序专门用于运行异步 Web 应用。main:appmain指的是main.py文件名app指的是文件里app FastAPI()的变量名中间用冒号分隔。--reload开启热重载模式。当你修改代码并保存后服务器会自动重启开发时必须加上。启动成功后访问http://127.0.0.1:8000即可看到返回的 JSON 数据同时可以访问http://127.0.0.1:8000/docs查看自动生成的交互式 API 文档。二、路径参数Path Parameters1. 什么是路径参数路径参数是 URL 路径中的动态可变部分格式为{参数名}用于标识「具体的资源」如物品 ID、用户 ID。示例/items/11是路径参数item_id的值/users/100100是路径参数user_id的值FastAPI 会自动提取路径中的对应值并传递给路由处理函数。2. 路径参数的类型注解FastAPI 支持所有 Python 原生类型作为路径参数的注解会自动进行类型校验和转换。python运行# 1. 字符串类型 (默认可省略str注解) app.get(/users/{username}, summary字符串路径参数) def read_user(username: str): # str注解可省略默认按字符串处理 return {username: username} # 2. 布尔类型 (自动解析true/false为布尔值) app.get(/status/{is_active}, summary布尔路径参数) def check_status(is_active: bool): return {is_active: is_active, type: type(is_active).__name__} # 3. 浮点数类型 app.get(/price/{amount}, summary浮点路径参数) def get_price(amount: float): return {amount: amount, type: type(amount).__name__}测试不同类型参数访问/users/张三→ 字符串类型正常返回访问/status/true→ 自动转为bool: True访问/price/9.9→ 浮点类型正常返回访问/price/abc→ 自动返回类型校验错误3. 高级用法数值范围校验使用Path类基础类型注解只能校验类型无法限制数值范围如物品 ID 必须 ≥1。FastAPI 提供Path类支持更精细的校验规则。python运行from fastapi import Path # 导入Path类 app.get(/items/{item_id}) def read_item( # Path类参数: ge(≥)、le(≤)、gt()、lt()、title、description等 item_id: int Path( ge1, # 必须大于等于1 le100, # 必须小于等于100 title物品ID, # 参数标题显示在文档中 description物品的唯一标识范围1-100, # 参数描述 aliasitem-id # 参数别名文档中显示的名称 ) ): return {item_id: item_id}4. 路径参数包含斜杠/默认情况下路径参数会被/分割。若需要路径参数包含/如/files/home/user/doc.txt需使用「路径转换器」pathpython运行# 包含斜杠的路径参数 app.get(/files/{file_path:path}, summary包含斜杠的路径参数) def read_file(file_path: str): 路径参数包含斜杠示例: 使用:path转换器 示例访问: /files/home/user/doc.txt - file_path home/user/doc.txt return {file_path: file_path, message: 文件路径接收成功}测试效果访问/files/home/user/doc.txt→file_path: home/user/doc.txt访问/files/data/report/2025.pdf→file_path: data/report/2025.pdf三、完整代码示例python运行from fastapi import FastAPI, Path from enum import Enum # 导入Python内置枚举类 # 创建一个FastAPI实例用来处理HTTP请求 # 创建实例可以传参数来对开发文档进行描述 app FastAPI( titlefirst开发文档, description文档描述, summary文档总结, version0.1, ) # 用装饰器创建一个路由定义请求方式以及请求路径 # 必须用app创建因为是FastAPI实例是app app.get(/) async def root(): return {message: Hello World} # 也可以对异步函数进行描述 # summary在外面显示 description在里面显示 app.get(path: /temp, summary第一个异步函数, description异步函数) async def temp(): return {message: 第一个异步函数} # 动态路由其中name是路径参数这里充当于函数的实参 app.get(/hello/{name}) # 定义路径参数一般要定义参数类型。这里充当于函数的形参 async def say_hello(name: str 张三): return {message: fHello {name}} # 路径参数会被/分割若想为一个整体则需要路径转换器:path # 示例: /file/home/user/doc.txt - file_path home/user/doc.txt app.get(path: /file/{file_path:path}, summary有/的路径参数) async def read_file(file_path: str): return {msg:f文件路径为: {file_path}} # 当对路径参数有限制时可以使用Path类来实现 # Path类有很多参数 app.get(path: /user/{name}/{age}, summary用户信息总结) async def user_info(name: strPath(min_length3,max_length5), age: int Path(description年龄,le20,gt18)): return {msg:f名称为: {name}年龄为: {age}}四、今日学习总结项目初始化掌握了main.py的创建、FastAPI实例化及核心配置。服务启动学会了使用uvicorn命令启动开发服务器并理解了--reload等关键参数。基础路由编写了第一个GET接口了解了异步函数async def的优势。路径参数基础用法动态 URL 与类型注解。类型校验自动处理字符串、布尔、浮点等类型。高级校验使用Path类实现数值范围、长度限制等。特殊场景使用path转换器处理包含斜杠的路径参数。

相关新闻

Avalonia UI框架:跨平台.NET应用开发全解析

Avalonia UI框架:跨平台.NET应用开发全解析

1. Avalonia UI框架深度解析1.1 跨平台.NET UI解决方案演进在桌面应用开发领域,跨平台解决方案一直是个技术难点。Avalonia的出现彻底改变了这个局面——它是一个基于.NET的跨平台UI框架,使用XAML进行界面布局,C#编写业务逻辑,采用…

2026/7/21 20:17:08 阅读更多 →
RFSoC xcku5p 中的 CMAC 及 GTY

RFSoC xcku5p 中的 CMAC 及 GTY

1. xcku5p 中的 CMAC 及 GTY 关于 AMD XCKU5P FPGA 中 CMAC 硬核与 GTY 的关系及内部结构,核心信息如下: ✅ CMAC 硬核与 GTY 的关系 简而言之:CMAC 是一个实现 100G 以太网协议栈的“硬核”IP,而 GTY 是物理层的高速串行收发器。…

2026/7/21 20:17:09 阅读更多 →
CVD金刚石单晶片:从实验室到产业化的技术突破

CVD金刚石单晶片:从实验室到产业化的技术突破

## MPCVD技术路线 微波等离子体化学气相沉积(MPCVD)是目前制备高质量单晶金刚石的主流技术路线。相比传统高温高压(HPHT)法,MPCVD能够实现更高纯度和更大尺寸的单晶生长。 ## 光学级金刚石的应用 光学级CVD金刚石单…

2026/7/22 23:24:04 阅读更多 →

最新新闻

【更新2024年】2000-2024年各地级市PM2.5年均浓度数据

【更新2024年】2000-2024年各地级市PM2.5年均浓度数据

【更新2024年】2000-2024年各地级市PM2.5年均浓度数据 1、时间:2000-2024年 2、来源:圣路易斯华盛顿大学、中国空气质量监测站点 3、指标:城市、年份、省份、省份代码、城市代码、胡焕庸线、PM2.5年均浓度(微克/立方) 4、范围…

2026/7/23 21:03:48 阅读更多 →
Android CameraServer架构理解

Android CameraServer架构理解

0. 全链路架构总览 +=====================================================================+ | App 层 (Java/Native) | | android.hardware.camera2 (Camera2 API) | | android.hardware…

2026/7/23 21:03:48 阅读更多 →
【Linux系统篇】从 fork 到 WNOHANG:进程创建与等待机制详解

【Linux系统篇】从 fork 到 WNOHANG:进程创建与等待机制详解

🔥个人主页:爱和冰阔乐 📚专栏传送门:《数据结构与算法》 、C 🐶学习方向:C方向学习爱好者 ⭐人生格言:得知坦然 ,失之淡然 🏠博主简介 文章目录前言一、进程创建1.1 f…

2026/7/23 21:03:48 阅读更多 →
本科毕业设计全流程问题解析与应对策略

本科毕业设计全流程问题解析与应对策略

1. 本科毕业设计常见问题深度解析毕业季来临,又到了大四学子们为毕业设计焦头烂额的时候。作为指导过多届毕业设计的"老司机",我整理了一份超详细的毕业设计问答指南,希望能帮助大家少走弯路。这份问答不是那种泛泛而谈的"正确…

2026/7/23 21:03:48 阅读更多 →
OpenCvSharp读取、显示和写入图像

OpenCvSharp读取、显示和写入图像

⒈目的通过本案例,掌握在winform框架下基于OpenCvSharp读取、显示和写入图像的方法。⒉软件Visual Studio 2022⒊界面设计控件包括:button。⒋安装NuGet程序包⑴OpenCvSharp4⑵OpenCvSharp4.runtime.win⑶OpenCvSharp4.Extensions⒌imread()读取图像cv.i…

2026/7/23 21:02:47 阅读更多 →
宇视VM新BS拼控轮巡配置指导(B3359)

宇视VM新BS拼控轮巡配置指导(B3359)

宇视VM新BS拼控轮巡配置指导(B3359)一.功能介绍在电视墙场景的多个窗口中轮流播放摄像机实况。摄像机与窗口的布局自动匹配,不固定。二.配置步骤1、保存场景进入VM【电视墙】,先开窗,业务必须要…

2026/7/23 21:02:47 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻