探索 Python 库:FastAPI

发布日期:2026-07-08 08:34:05   来源 : 杭州电子商务研究院    浏览量 :4
杭州电子商务研究院 发布日期:2026-07-08 08:34:05  
4

介绍

FastAPI是一个现代 Python Web 框架,具有许多优点,包括:

  • 它是目前速度最快的(高性能)Web 框架之一。
  • 它利用Python 3.6+ 的类型注释支持来获得更好的数据验证和编辑器支持。
  • 它利用 Python 的异步功能,这对于构建异步 API 很有用。
  • 它基于OpenAPIJSON Schema等开放标准生成标准。
  • 它功能强大并且易于使用和学习。

因此,在本指南中,您将探索最新、最好的 Python Web 框架库之一。

入门

安装、创建和运行 FastAPI 只需三个基本步骤。

安装

      pip install fastapi
    

您还需要一个ASGI异步服务器网关接口)服务器,例如Uvicorn

      pip install uvicorn
    

创建您的应用程序

要查看最简单的 FastAPI 应用程序的外观,请创建一个名为main.py的新 Python 文件

      from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"hello": "world"}
    

运行你的应用程序

要运行该应用程序,只需执行以下操作:

      uvicorn main:app --reload
    

运行上述命令后,服务器启动如下:

      INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL
+C to quit)
INFO:     Started reloader process [4136] using
statreload
INFO:     Started server process [12988]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
    

深入探索

路径参数

您可以将 API 调用的参数声明为函数参数的变量。在这里,我使用course_id作为参数。请注意,参数的类型为int

      @app.get("/course/{course_id}")
def my_course(course_id: int):
    return {"course_id": course_id}
    

如果您提供的 URL 不正确,例如course/100s,您将收到以下验证错误。

      {
    "detail": [
        {
            "loc": [
                "path",
                "course_id"
            ],
            "msg": "value is not a valid integer",
            "type": "type_error.integer"
        }
    ]
}
    

如果你针对course/100之类的 URL 运行该示例,调用将得到以下响应:

      {"course_id":100}
    

查询参数

向 API 调用提供参数的另一种方式是将其作为查询参数提供。例如:/my/page/items/?page=1&limit=10&order=0

以下是如何在 FastAPI 中实现该功能。

      dummy_data = [i for i in range(100)]

@app.get("/my/page/items/")
async def read_item(page: int = 0, limit: int = 0, skip: int = 1):
    return dummy_data[page*10: page*10 + limit: skip]
    

在上面的示例中,设置了三个参数。因此,对于https://127.0.0.1:8000/my/page/items/?page=2&limit=29&skip=2这样的 URL ,参数将是:

  • 页数(整数): 2
  • 限制(整数):29
  • 跳过(int):2

因此上述 URL 的响应将是:

      20
    

请求正文

当你需要从客户端向服务器发送数据时,可以使用请求体。

注意:要使用请求主体发送数据,请使用POST方法。您不能在请求主体中使用GET方法。

要声明请求主体,请使用Pydantic模型并将请求主体声明为:

      from pydantic import BaseModel

class MyItem(BaseModel):
    name: str
    info: str = None
    price: float
    qty: int

@app.post("/purchase/item/")
async def create_item(item: MyItem):
    return {"amount": item.qty*100, "success": True}
    

在上面的例子中,我创建了一个名为MyItem的模型,该模型具有某些属性。现在,当端点/purchase/item/上有POST请求时,它将捕获属性值并成功返回。

让我们使用CURL测试这个 API 调用。

      curl -X POST "http://127.0.0.1:8000/purchase/item/" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"name\":\"sample item\",\"info\":\"This is info for the item\",\"price\":40,\"qty\":2}"
    

它将给出答复:

      {"amount":200,"success":true}
    

表单数据

在许多情况下,您可能需要接收表单字段而不是 JSON。在这种情况下,Form可以解决问题。HTML 表单( <form></form> )发送数据的方式与 JSON 不同,但 FastAPI 可确保正确解析数据。

要使用表单数据,首先安装附加库python-multipart

      pip install python-multipart
    

为了这个演示,我创建了一个登录视图,将用户名密码作为表单字段。

      from fastapi import Form

@app.post("/accounts/login/")
async def login_view(username: str = Form(...), password: str = Form(...)):
    return {"success": True}
    

自动文档

FastAPI 附带一个电池,可在美观的 Web 用户界面中自动生成 API 文档。fastAPI 附带两个默认的自动文档。

Swagger 用户界面

这是对您的 API 调用的交互式探索。在这里,您可以在一个美观且用户友好的界面中查看和测试您的 API 调用。点击此处了解更多信息。

重新文档

或者,您可以使用redoc作为您的 API 文档。

查看更多相关信息

探索功能

表现

在 Uvicorn 下运行的 FastAPI 应用使用速度最快的 Python Web 框架之一,仅次于 Starlette 和 Uvicorn 本身(FastAPI 内部使用)。查看基准测试。

<div class="cmp-ps-image aem-GridColumn--tablet--12 aem-GridColumn--phone--12 aem-GridColumn a
以上内容来自杭州电子商务研究院推送
关注
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据