Python强大的库和框架——FastAPI

本文介绍了FastAPI,一个通过Starlette和Pydantic构建的高性能API框架,强调其安装方法、视图函数、参数处理、异步支持、文档自动生成和依赖注入等特点。
摘要由CSDN通过智能技术生成

FastAPI 是一个现代、快速(通过使用 Starlette 和 Pydantic),并且基于标准 Python 类型提示的 Web 框架。它设计用于构建高性能的 API,同时保持简洁和易用。

以下是 FastAPI 的一些关键特点和详解:

1. 安装 FastAPI:

使用以下命令通过 pip 安装 FastAPI:

pip install fastapi

2. 创建一个 FastAPI 应用:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

@app.get("/items/{item_id}")
def read_item(item_id: int, query_param: str = None):
    return {"item_id": item_id, "query_param": query_param}

在上述例子中:

  • FastAPI() 创建了一个 FastAPI 应用实例。
  • @app.get("/") 装饰器定义了处理根路径的视图函数 read_root()
  • @app.get("/items/{item_id}") 装饰器定义了处理路径中包含变量 item_id 的视图函数 read_item()

3. 路径参数和查询参数:

FastAPI 使用类型提示来声明路径参数和查询参数,它自动解析和验证输入。路径参数通过花括号 {} 定义,查询参数通过函数参数声明。

from fastapi import FastAPI

app = FastAPI()

@app.get("/items/{item_id}")
def read_item(item_id: int, query_param: str = None):
    return {"item_id": item_id, "query_param": query_param}

在上述例子中,item_id 是路径参数,query_param 是查询参数。FastAPI 会自动解析并验证参数的类型。

4. 请求体和响应体:

FastAPI 支持 JSON 请求体和响应体,通过使用 Pydantic 模型来定义数据结构。

from fastapi import FastAPI, Body

app = FastAPI()

class Item:
    name: str
    description: str = None
    price: float
    tax: float = None

@app.post("/items/")
async def create_item(item: Item, additional_param: str = Body(..., embed=True)):
    return {"item": item, "additional_param": additional_param}

在上述例子中,Item 类定义了请求体的结构,create_item() 视图函数使用了 Item 类型的参数。Body(..., embed=True) 表示 additional_param 参数是一个嵌套在请求体中的额外参数。

5. 异步支持:

FastAPI 使用异步(async/await)支持,可以编写异步的视图函数和请求处理。

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def read_root():
    return {"message": "Hello, World!"}

在上述例子中,async def 定义了一个异步视图函数。

6. 文档自动生成:

FastAPI 自动生成交互式 API 文档,支持 Swagger UI 和 ReDoc。可以通过访问 /docs/redoc 路径查看文档。

7. 依赖注入:

FastAPI 支持依赖注入,可以通过声明参数的方式将依赖项注入到视图函数中,例如数据库连接、认证信息等。

from fastapi import FastAPI, Depends

app = FastAPI()

def get_query_param(query_param: str = None):
    return query_param

@app.get("/")
def read_root(query_param: str = Depends(get_query_param)):
    return {"query_param": query_param}

在上述例子中,Depends(get_query_param) 注入了 get_query_param 函数的返回值作为 query_param 参数。

FastAPI 提供了许多其他功能,如 WebSocket 支持、Cookie 和 Header 解析、安全性支持等。它是一个功能强大且易于使用的现代 Web 框架,特别适用于构建高性能的 API。

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SmiledrinkCat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值