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

【LLM】FastAPI入门教程

note

  • FastAPI 是一个现代的、快速(高性能)的 Web 框架,用于构建 API(应用程序编程接口)。它基于 Python 3.7+,使用了 Python 类型提示(type hints),并且具有自动化的文档功能。

文章目录

  • note
  • 一、FastAPI
  • 二、Pydantic定义和校验数据类型
  • Reference

一、FastAPI

简介:FastAPI 是一个现代的、快速(高性能)的 Web 框架,用于构建 API(应用程序编程接口)。它基于 Python 3.7+,使用了 Python 类型提示(type hints),并且具有自动化的文档功能。

(1)安装fastapi

# 安装 FastAPI 和一个异步 HTTP 服务器(比如 Uvicorn)
pip install fastapi uvicorn

(2)创建一个简单的 FastAPI 应用
main.py内容如下:

from fastapi import FastAPIapp = FastAPI()@app.get("/")
async def read_root():return {"message": "Hello World"}

(3)终端运行:uvicorn main:app --reload

  • uvicorn 是 HTTP 服务器。
  • main 是你的 Python 文件名(main.py)。
  • app 是你在文件中创建的 FastAPI 实例。
  • –reload 是一个开发选项,它会在代码更改时自动重新加载服务器。

运行后,你会看到类似这样的输出:

INFO:     Started server process [12345]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://1234.0.0.1:8000 (Press CTRL+C to quit)

(4)访问你的 API
打开浏览器,访问 http://127.0.0.1:8000,你会看到返回的 JSON 数据:

{"message": "Hello World"
}

(5)查看自动生成的文档
FastAPI 会自动为你生成文档,你可以通过以下两个链接访问:

  • http://127.0.0.1:8000/docs:使用 Swagger UI
  • http://127.0.0.1:8000/redoc:使用 ReDoc

这些文档会根据你的代码自动生成

(6)添加更多路由:可以添加更多的路由来处理不同的请求,比如:

@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):return {"item_id": item_id, "q": q}
  • /items/{item_id} 是一个路径参数,item_id 是一个整数。
  • q 是一个可选的查询参数。

访问 http://127.0.0.1:8000/items/1?q=somequery,你会看到返回:

{"item_id": 1,"q": "somequery"
}

(7)使用请求体
FastAPI 可以轻松处理 JSON 请求体

from pydantic import BaseModelclass Item(BaseModel):name: strdescription: str = Noneprice: floattax: float = None@app.post("/items/")
async def create_item(item: Item):return item
  • Item 是一个 Pydantic 模型,用于定义请求体的结构。
  • 使用 @app.post 来定义一个 POST 请求。

可以通过文档页面(http://127.0.0.1:8000/docs)测试这个 POST 请求,输入 JSON 数据:

{"name": "Item1","description": "This is an item","price": 9.99,"tax": 1.0
}

二、Pydantic定义和校验数据类型

Pydantic 是一个 Python 库,用于 数据验证 和 设置管理。它的名字来源于 Python 和 valid(验证)的结合。Pydantic 的核心功能是通过 Python 类型提示(Type Hints) 来验证数据的类型和结构。

在 FastAPI 中,Pydantic 主要用于定义 请求体(Request Body) 的结构。当你需要接收用户发送的 JSON 数据时,Pydantic 可以确保这些数据的格式是正确的。

Reference

[1] https://fastapi.tiangolo.com/
[2] http://www.datawhale.cn/learn/summary/164
[3] fastapi教程:https://hongtaoh.com/cn/2024/09/01/fastapi/

http://www.lryc.cn/news/2396227.html

相关文章:

  • 进程同步机制-信号量机制-记录型信号量机制中的的wait和signal操作
  • gitlib 常见命令
  • Azure DevOps 管道部署系列之二IIS
  • Vue.js教学第十七章:Vue 与后端交互(一),Axios 基础
  • 人工智能浪潮下,制造企业如何借力DeepSeek实现数字化转型?
  • NodeJS全栈开发面试题讲解——P2Express / Nest 后端开发
  • 从线性代数到线性回归——机器学习视角
  • 计算机网络相关发展以及常见性能指标
  • 通义灵码:基于MCP的火车票小助手系统全流程设计与技术总结
  • 为什么建立 TCP 连接时,初始序列号不固定?
  • VBA数据库解决方案二十:Select表达式From区域Where条件Order by
  • NX753NX756美光科技闪存NX784NX785
  • 使用 pytesseract 构建一个简单 OCR demo
  • Cesium快速入门到精通系列教程三:添加物体与3D建筑物
  • git 如何解决分支合并冲突(VS code可视化解决+gitLab网页解决)
  • 【CF】Day72——Codeforces Round 890 (Div. 2) CDE1 (二分答案 | 交互 + 分治 | ⭐树上背包)
  • 单片机寄存器的四种主要类型!
  • 智能嗅探AJAX触发:机器学习在动态渲染中的创新应用
  • 【计算机网络】Linux下简单的UDP服务器(超详细)
  • Java并发编程实战 Day 3:volatile关键字与内存可见性
  • 华为OD机试真题——报文回路(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • K8s工作流程与YAML实用指南
  • 功能丰富的PDF处理免费软件推荐
  • Java补充(Java8新特性)(和IO都很重要)
  • pycharm debug的时候无法debug到指定的位置就停住不动了
  • 分布式流处理与消息传递——Kafka ISR(In-Sync Replicas)算法深度解析
  • 极大似然估计例题——正态分布的极大似然估计
  • Pull Request Integration 拉取请求集成
  • OS10.【Linux】yum命令
  • 头歌数据库课程实验(角色管理)