快速掌握FastAPI:高效构建Web API

快速掌握FastAPI:高效构建Web API

FastAPI 简介

  • FastAPI 是一个基于 Python 的高性能 Web 框架,专门用于快速构建 API 接口服务

FastAPI 框架基础

使用 FastAPI 框架搭建 Web 服务

1. 创建项目

2. 运行项目

run运行

uvicorn main:app --reload  终端运行

--reload:更改代码后自动重启服务器

3. 访问项目

访问 FastAPI 交互式文档:

路由

路由: URL 地址和处理函数之间的映射关系,它决定了当用户访问某个特定网址时,服务器应该执行哪段代码来返回结果示例:

@app.get("/") async def root(): return {"message": "Hello World666"} @app.post("/add_book") async def add_book(book: Book): return book

参数

 同一段接口逻辑,根据参数不同返回不同的数据

参数就是客户端发送请求时附带的额外信息和指令参数的作用是让同一个接口能根据不同的输入,返回不同的输出,实现动态交互

路径参数

URL 路径设置参数
@app.get("/user/{id}") async def get_user(id: int): return {"id": id, "titleName": f"这是用户{id}"}
路径参数 - 类型注解 Path

FastAPI 允许为参数声明额外的信息和校验

Path 参数
说明
...必填
gt/ge
大于/大于等于
lt/le
小于/小于等于
description
描述
min_length
max_length
长度限制

from fastapi import FastAPI, Path @app.get("/newsClassificationId/{id}") async def get_news_classification_id(id: int = Path(..., ge=1, le=100, description="新闻分类id")): return {"id": id, "titleName": f"新闻分类id为{id}"}

查询参数

声明的参数不是路径参数时,路径操作函数会把该参数自动解释为查询参数

@app.get("/news/news_list") async def get_news_list(skip: int, limit: int=10): return {"skip": skip, "limit": limit}
查询参数 - 类型注解 Query
Query 参数
说明
...必填
gt/ge
大于/大于等于
lt/le
小于/小于等于
description
描述
min_length
max_length
长度限制
from fastapi import FastAPI, Path, Query @app.get("/book/query_list") async def get_query_book_list( type: str = Query("Python开发", min_length=5, max_length=255, description="图书分类名称"), price: int = Query(..., ge=50, le=100, description="图书价格"), ): return {"type": f"图书分类名称为{type}", "price": f"价格为{price}"}

请求体参数

HTTP 请求的消息体 (body)中

在HTTP协议中,一个完整的请求由三部分组成:① 请求行:包含方法、URL、协议版本② 请求头:元数据信息(Content-Type、Authorization等)③ 请求体:实际要发送的数据内容

from pydantic import BaseModel class Book(BaseModel): bookTitle: str author: str publishingHouse: str price: int @app.post("/add_book") async def add_book(book: Book): return book
请求体参数 - 类型注解 Field
Field 参数
说明
...必填
gt/ge
大于/大于等于
lt/le
小于/小于等于
description
描述
min_length
max_length
长度限制
以图书信息为请求体参数设计URL,要求响应结果包含图书名称、作者、出版社、价格,并且图书名称、作者、价格长度范围2-20、2-10、0-100内 # 新增图书 from pydantic import BaseModel,Field class Book2(BaseModel): bookTitle: str = Field(..., min_length=2, max_length=20, description="书名") author: str = Field(min_length=2, max_length=10, description="作者") publishingHouse: str = Field(default="星空椰出版社", description="出版社") price: int = Field(..., gt=0, description="价格") @app.post("/add_book2") async def add_book(book: Book2): return book

请求与响应

响应类型

响应类型
用途
示例
JSONResponse
默认响应,返回JSON数据
return {"key": "value"}
HTMLResponse
返回HTML内容
return HTMLResponse(content)
PlainTextResponse
返回纯文本
return PlainTextResponse("text")
FileResponse
返回文件下载
return FileResponse(path)
StreamingResponse
流式响应
生成器函数返回数据
RedirectResponse
重定向
return RedirectResponse(url)

响应类型设置方式

装饰器中指定响应类一般用于固定返回类型(HTML、纯文本等)

from starlette.responses import HTMLResponse @app.get("/html", response_class=HTMLResponse) async def get_html(): return "<h1>这是一级标题</h1>"

返回响应对象用于文件下载、图片、流式响应

from fastapi.responses import FileResponse @app.get("/file") async def get_file(): file_path = "./files/1.jpeg" return FileResponse(file_path)

自定义响应数据格式

response_model 是路径操作装饰器(如 @app.get或 @app.post)的关键参数,它通过一个 Pydantic 模型来严格定义和约束 API 端点的输出格式。

from pydantic import BaseModel class News(BaseModel): id: int title: str content: str @app.get("/news/{id}", response_model=News) async def get_news(id: int): return { "id": id, "title": f"这是第{id}本书", "content": "这是一本好书" }

异常处理

操作接口出现异常,应使用 fastapi.HTTPException 来中断正常处理流程, 并返回标准错误响应

from fastapi import FastAPI, HTTPException @app.get('/news/{id}') async def get_news(id: int): id_list = [1, 2, 3, 4, 5, 6] if id not in id_list: raise HTTPException(status_code=404, detail="当前id不存在") return {"id": id}

Read more

Visual Studio 2026中Github Copilot的大模型

在 Copilot Chat 中开始使用 AI 模型 在 Visual Studio 17.14 中,Visual Studio 里的 GitHub Copilot 默认使用 GPT-4.1(之前是 GPT-4o)。GPT-4.1 提供更快的响应速度、更高质量的代码建议,以及更高的编码效率。 不过,你并不局限于使用默认模型,你也可以选择其他模型,或者添加自己的模型,根据工作流程选择最合适的 AI 模型。 可用模型 在模型选择器中,你可以选择更多模型,包括: * Claude Sonnet 4 * Claude Opus 4 * GPT-5 * Claude Sonnet 3.5 * Claude

Llama-3.2-3B部署优化:Ollama配置context window与token限制详解

Llama-3.2-3B部署优化:Ollama配置context window与token限制详解 如果你正在使用Ollama运行Llama-3.2-3B,可能会遇到这样的问题:对话聊着聊着,模型好像“失忆”了,不记得之前说了什么;或者当你输入一段稍长的文本时,直接被截断,只处理了前面一小部分。 这通常不是模型本身的问题,而是默认的上下文长度(context window)和token限制设置不够用。今天,我就来手把手教你如何调整这些关键参数,让你的Llama-3.2-3B真正“火力全开”,处理更长的对话和文档。 1. 核心概念:为什么需要调整Context Window和Token限制? 在深入操作之前,我们先花两分钟搞懂两个关键名词,这能帮你更好地理解为什么要调整,以及调整到什么程度合适。 1.1 什么是Context Window(上下文窗口)? 你可以把Context Window想象成模型的工作记忆区或“短期记忆”。它决定了模型在生成下一个词时,能“看到”并参考之前多长的文本。 * 默认情况:很多模型,包括Ollama默认拉取的Llama-3.2-3B,

Visual Studio 2026 中的 GitHub Copilot Agent 模式

🎯 1. 什么是 GitHub Copilot Agent 模式? GitHub Copilot Agent 模式是 GitHub Copilot 在 Visual Studio 中的一种高级协作方式,它能: * 理解自然语言提示 * 自动拆解任务并规划执行步骤 * 修改代码、运行命令、调用工具 * 持续监控执行效果 * 自动迭代直至满足目标 这与传统的 Copilot(仅生成代码建议)不同,Agent 模式更像是一个智能自动化助手,可执行多步骤复杂任务,而不是单次单向响应。 🧠 2. 工作原理:自动执行与迭代 Agent 模式的核心流程如下: 📌 2.1 请求分析 当你提交一个自然语言提示(Prompt): * 如果任务是单步请求,则直接生成代码建议; * 如果任务涉及多个步骤,Copilot 会进入 规划模式(Planning Mode)

文心一言开源版部署及多维度测评实例

文心一言开源版部署及多维度测评实例

文章目录 * 第一章 文心一言开源模型简介 * 第二章 模型性能深度实测 * 2.1 通用能力基准测试 * 2.1.1 文本生成质量 * 2.1.2 数学推理能力 * 2.2 极端场景压力测试 * 2.2.1 高并发性能 * 2.2.2 长上下文记忆 * 第三章 中文特色能力解析 * 3.1.2 文化特定理解 * 3.2 行业术语处理 * 3.2.1 法律文书解析 * 3.2.2 医疗报告生成 * 第四章 开源生态建设评估 * 4.1 模型可扩展性验证 * 4.