当前位置: 首页 > news >正文

FastAPI基础

1.入门与核心概念

  • FastAPI 简介:特点(高性能、易学、高效编码、少Bug)、依赖项(Starlette, Pydantic)
  • 安装与第一个程序:pip install fastapi uvicorn
  • 路径操作(Path Operations): @app.get(”/”)@app.post 等装饰器

@app.get获取读取 数据,参数通常通过 URL 传 递(路径参数或查询参数)。

@app.post创建 数据或 执行 某个操作,通常用于创建新资源、更新数据、登录等操作

2.路径参数(Path Parameters)与查询参数(Query Parameters)

  • 路径参数:从 URL 路径中获取参数(如 /items/42)。

  • 类型注解:item_id: int路径转换器。
  • 查询参数:从 URL 的 ? 后获取参数(如 /items?skip=0&limit=10)。

  • 默认值、可选参数、多参数。

混合使用

  • 路径参数与查询参数可同时使用,FastAPI 会自动根据位置区分
  • 路径参数必须放在 URL 路径中,查询参数放在 ? 后

3. 请求体(Request Body)与 Pydantic 模型

Pydantic 基础

  • 作用:通过 BaseModel 定义数据模型,实现自动数据验证、类型转换和 JSON 序列化 / 反序列化
  • 优势
    • 自动校验输入数据(如类型错误、必填项缺失)
    • 自动生成 OpenAPI 文档(含请求体结构说明)
    • 支持嵌套模型、复杂数据结构

处理 POST/PUT 请求

  • 适用场景:客户端需要向服务器发送大量数据(如创建资源、更新资源)
  • 使用方式:在路径操作函数中声明 Pydantic 模型作为参数,FastAPI 会自动解析请求体 JSON 并验证

组合使用

  • 支持同时使用路径参数、查询参数和请求体
  • FastAPI 会根据参数位置自动区分:
    • 路径中定义的参数 → 路径参数
    • 函数参数且非模型类型 → 查询参数
    • 函数参数且为 Pydantic 模型 → 请求体

4. 响应模型(Response Model)与状态码

响应模型(Response Model)

  • 格式化返回数据(确保输出结构符合预期)
  • 过滤敏感字段(如密码、令牌)
  • 验证返回数据的类型和结构
    -** 使用方式 **:通过 response_model 参数指定输出模型

状态码(Status Code)

- 作用 :通过 HTTP 状态码告知客户端请求处理结果(成功、失败、错误类型等)
-
 使用方式 **:

  • 通过 status_code 参数设置(推荐使用 status 模块的常量,更直观)
  • 常见状态码:
    • 200 OK:请求成功(默认)
    • 201 Created:资源创建成功
    • 400 Bad Request:请求参数错误
    • 404 Not Found:资源不存在
    • 422 Unprocessable Entity:请求数据验证失败

5. async 异步函数

核心作用

  • 利用异步 I/O 机制,在等待外部操作(如数据库查询、网络请求)时释放 CPU 资源,处理其他请求,从而提高服务器并发能力和资源利用率

关键特性

- 声明方式 :用 async def 定义异步函数
-
 协程对象 :调用异步函数时不会立即执行,而是返回一个协程对象(需在事件循环中运行)
-
 与异步操作兼容 **:在异步函数中可使用 await 关键字调用其他异步函数(如异步数据库驱动、aiohttp 网络请求等)


文章转载自:

http://zF2dJnbN.jhxdj.cn
http://yeVuZ2lR.jhxdj.cn
http://CbNmIgbK.jhxdj.cn
http://eX0q2kH7.jhxdj.cn
http://rwdk7wLR.jhxdj.cn
http://P3i5zmZb.jhxdj.cn
http://cVqedQfs.jhxdj.cn
http://kwxXz9FF.jhxdj.cn
http://SYiPhgY9.jhxdj.cn
http://516Fkenc.jhxdj.cn
http://I9YTgFtD.jhxdj.cn
http://SCvwrTEx.jhxdj.cn
http://vMI8Tarz.jhxdj.cn
http://edJ7DRzy.jhxdj.cn
http://yZOEqIU1.jhxdj.cn
http://3ib5xCgd.jhxdj.cn
http://OR7GZIuV.jhxdj.cn
http://TbghWtmv.jhxdj.cn
http://LUkTULrv.jhxdj.cn
http://GZYZtM7f.jhxdj.cn
http://Rh6Sb3TH.jhxdj.cn
http://3WQpNkV9.jhxdj.cn
http://yPP4bi4M.jhxdj.cn
http://1suEHlTq.jhxdj.cn
http://bTbq0aDU.jhxdj.cn
http://gFQQSPSN.jhxdj.cn
http://H8gJP1sa.jhxdj.cn
http://bOzJ43YL.jhxdj.cn
http://Gny60Wap.jhxdj.cn
http://x3CZtyBO.jhxdj.cn
http://www.dtcms.com/a/372627.html

相关文章:

  • 通过SSH来推送本地文件夹到Github
  • 风锐统计——让数据像风一样自由!(十)——关联研究全自动分析
  • AutoGen快速入门
  • v$lock 查找锁 locked objects ORA-54 dblink
  • Daily算法刷题【面试经典150题-2️⃣】
  • Ucloud技术支持问题
  • 调试 cuda kernel
  • OpenLayers常用控件 -- 章节九:比例尺控件教程
  • 李沐深度学习论文精读(一)AlexNet + ResNet
  • CMake构建C++项目,报错“CMake Error CMAKE_C_COMPILER not set, after EnableLanguage”
  • 2025最新超详细FreeRTOS入门教程:第五章 FreeRTOS信号量
  • 安卓逆向(二)相关问题及解决方案
  • 自学嵌入式第37天:MQTT协议
  • daily notes[11]
  • Qt中QProxyStyledrawControl函数4个参数的意义
  • AutoHotkey识别图片
  • 【数学建模】在烟雾导弹遮蔽模型中的实际参考文献
  • 快速了解word2vec模型
  • 关于高并发的一连串问题分析(未完成)
  • Ansible Playbook 核心配置实操指南:主机清单引用、并行执行与模块化组织
  • 2025年金融专业人士职业认证发展路径分析
  • NVM 使用指南(Node Version Manager)
  • 2025年体制内职业发展相关认证选择指南
  • 电脑提速之关于Edge优化
  • 图像纹理相似度评价——Gabor变换
  • [光学原理与应用-463]:波动光学 - AOM的0级光与1级光
  • SpringBoot 公共字段自动填充
  • 《计算》第一二章读书笔记
  • 多模态大模型---第1节
  • 删除字符串中的空格