fastapi-简介

FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于标准的 Python 类型提示。有如下几个关键特性:

  • 快速:可与 NodeJS 和 Go 并肩的极高性能(归功于 Starlette 和 Pydantic)。最快的 Python web 框架之一。
  • 高效编码:提高功能开发速度约 200% 至 300%。*
  • 更少 bug:减少约 40% 的人为(开发者)导致错误。*
  • 智能:极佳的编辑器支持。处处皆可自动补全,减少调试时间。
  • 简单:设计的易于使用和学习,阅读文档的时间更短。
  • 简短:使代码重复最小化。通过不同的参数声明实现丰富功能。bug 更少。
  • 健壮:生产可用级别的代码。还有自动生成的交互式文档。
  • 标准化:基于(并完全兼容)API 的相关开放标准:OpenAPI (以前被称为 Swagger) 和 JSON Schema。

安装依赖

  • 安装fastapi
bash 复制代码
pip install fastapi
  • 安装uvicorn
python 复制代码
pip install uvicorn

示例

创建一个main.py并写入如下内容:

python 复制代码
from fastapi import FastAPI

app = FastAPI()

@app.get("/home")
async def home():
    return {"home": "ok"}

@app.get("/items/{item_id}")
async def items(item_id: int, q: Union[str, None] = None):
    return {"item_id": item_id}

然后,我们可以通过以下命令来运行:

bash 复制代码
# app为fastapi实例名
uvicorn main:app --reload

又或者这样,我们修改一下代码:

python 复制代码
import uvicorn
from fastapi import FastAPI

app = FastAPI()

@app.get("/home")
async def home():
    return {"home": "ok"}

@app.get("/items/{item_id}")
async def items(item_id: int, q: Union[str, None] = None):
    return {"item_id": item_id}
    
if __name__ == "__main__":
    uvicorn.run(app, host="127.0.0.1", port=8000)

然后我们直接运行main.py文件即可!

等服务起来之后,我们可以在浏览器中访问http://localhost:8000/home,将会有如下返回:

json 复制代码
{
    "home": "ok"
}

另外,我们访问http://127.0.0.1:8000/docs会看到交互式的API文档(由SWAGGER UI生成)。或者访问http://127.0.0.1:8000/redoc,你会看到另一个自动生成的文档(由 ReDoc 生成)

操作

这里的「操作」指的是一种 HTTP「方法」。在fastapi中支持的HTTP方法有:

  • POST: 创建数据
  • GET: 读取数据
  • PUT: 更新数据
  • DELETE: 删除数据

比较常用的有这4种操作,当然fastapi也支持其他几种少见的HTTP方法:

  • OPTIONS
  • HEAD
  • PATCH
  • TRACE

在 HTTP 协议中,你可以使用以上的其中一种(或多种)「方法」与每个路径进行通信。

我们可以使用FastAPI的实例来访问这些操作,如下:

python 复制代码
@app.get("/")
async def get_action():
    pass

@app.post("/")
async def post_action():
    pass

@app.delete("/")
async def delete_action():
    pass


@app.put("/")
async def put_action():
    pass

函数的返回可以是一个dictlist,也可以是像strint一样的单个值,等等。

你还可以返回Pydantic模型(稍后你将了解更多)。

相关推荐
吃茄子的猫3 小时前
quecpython中&的具体含义和使用场景
开发语言·python
じ☆冷颜〃3 小时前
黎曼几何驱动的算法与系统设计:理论、实践与跨领域应用
笔记·python·深度学习·网络协议·算法·机器学习
数据大魔方3 小时前
【期货量化实战】日内动量策略:顺势而为的短线交易法(Python源码)
开发语言·数据库·python·mysql·算法·github·程序员创富
APIshop3 小时前
Python 爬虫获取 item_get_web —— 淘宝商品 SKU、详情图、券后价全流程解析
前端·爬虫·python
风送雨3 小时前
FastMCP 2.0 服务端开发教学文档(下)
服务器·前端·网络·人工智能·python·ai
效率客栈老秦4 小时前
Python Trae提示词开发实战(8):数据采集与清洗一体化方案让效率提升10倍
人工智能·python·ai·提示词·trae
哈里谢顿4 小时前
一条 Python 语句在 C 扩展里到底怎么跑
python
znhy_234 小时前
day46打卡
python
Edward.W5 小时前
Python uv:新一代Python包管理工具,彻底改变开发体验
开发语言·python·uv
小熊officer5 小时前
Python字符串
开发语言·数据库·python