首页  

python3 fastapi 简介     所属分类 python 浏览量 16
FastAPI 是一个用于构建 API 的现代、快速(高性能)的 Web 框架,
使用 Python 语言并基于标准的 Python 类型提示 
旨在提供简洁、高效且易于使用的 API 开发体验 


主要特点

快速性能
基于 Starlette 和 Pydantic 构建,性能接近 Node.js 和 Go,适合高性能需求的应用 

类型提示驱动
使用 Python 的类型提示(Type Hints)进行参数校验、请求解析和响应数据格式化,减少运行时错误 

自动文档
自动生成交互式 API 文档(基于 Swagger UI 和 ReDoc),支持在线测试 API 端点 

简洁易用
代码简洁,开发效率高,支持依赖注入、中间件等高级特性 

标准兼容
完全兼容 ASGI(异步服务器网关接口),支持异步编程,充分利用 Python 的 async/await 特性 



核心组件

Pydantic:用于数据验证和序列化,确保请求和响应数据的格式正确 
Starlette:轻量级 ASGI 框架,提供路由、中间件、WebSocket 等功能 
Uvicorn:高性能 ASGI 服务器,用于运行 FastAPI 应用


典型应用场景
微服务架构
API 网关
数据处理服务
与前端框架(如 React、Vue)集成的后端服务
需要高性能的 Web 应用




简单示例 python --version Python 3.11.4 pip --version pip 23.2.1 from /Users/dugang/anaconda3/lib/python3.11/site-packages/pip (python 3.11) pip install fastapi uvicorn pip list | grep fastapi fastapi 0.116.1 pip list | grep uvicorn uvicorn 0.35.0 fastapi:核心框架 uvicorn:ASGI 服务器,用于运行 FastAPI 应用
main.py from fastapi import FastAPI, HTTPException from pydantic import BaseModel from typing import List, Optional # 创建 FastAPI 应用实例 app = FastAPI(title="示例 API", description="一个简单的 FastAPI 应用", version="1.0.0") # 定义数据模型 class Item(BaseModel): id: int name: str price: float is_available: Optional[bool] = True # 模拟数据库 items_db = [ Item(id=1, name="苹果", price=5.99), Item(id=2, name="香蕉", price=3.99), Item(id=3, name="橙子", price=4.59) ] # 根路径,返回欢迎信息 @app.get("/") def read_root(): return {"Hello": "World"} # 获取所有商品列表 @app.get("/items/", response_model=List[Item]) def read_items(): return items_db # 根据 ID 获取单个商品 @app.get("/items/{item_id}", response_model=Item) def read_item(item_id: int): item = next((item for item in items_db if item.id == item_id), None) if item is None: raise HTTPException(status_code=404, detail="商品未找到") return item # 添加新商品 @app.post("/items/", response_model=Item) def create_item(item: Item): # 检查 ID 是否已存在 if any(existing_item.id == item.id for existing_item in items_db): raise HTTPException(status_code=400, detail="商品 ID 已存在") items_db.append(item) return item # 更新商品信息 @app.put("/items/{item_id}", response_model=Item) def update_item(item_id: int, updated_item: Item): for index, item in enumerate(items_db): if item.id == item_id: items_db[index] = updated_item return updated_item raise HTTPException(status_code=404, detail="商品未找到") # 删除商品 @app.delete("/items/{item_id}") def delete_item(item_id: int): global items_db items_db = [item for item in items_db if item.id != item_id] return {"message": "商品已删除"} # 运行应用(仅用于开发环境) if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=8000)
python main.py http://127.0.0.1:8000/ http://127.0.0.1:8000/items/ http://127.0.0.1:8000/items/1

上一篇     下一篇
大模型面试题 200 问

RAG 7大核心概念

杭州市民卡预付账卡户和电子钱包账户区别

Python __name__ 使用

flask hello

python字节码缓存 .pyc 文件