赞
踩
目录
FastAPI是一个现代的、快速的Web框架,它能够帮助开发者快速构建高性能的Web应用程序。它基于Python 3.6及以上版本,采用异步框架:ASGI。本文将对FastAPI的基本架构和使用进行详细介绍,并通过一个示例应用程序来演示其功能。
在开始快速构建Web应用程序之前,首先需要安装FastAPI和相关依赖。我们可以使用Python自带的pip包管理器来安装FastAPI。在命令行窗口中输入以下命令即可:
- pip install fastapi
- pip install uvicorn[standard]
其中,uvicorn是一个基于ASGI的Python Web Server Gateway Interface服务器,用于将我们的应用程序运行在本地开发环境中。
FastAPI基于ASGI异步框架构建,这意味着我们可以使用异步Python来提供更高效的Web应用程序。FastAPI包含以下主要部分:
为了演示FastAPI的使用方法,我们将使用它来构建一个简单的Web应用程序。我们的应用程序将提供以下API功能:
下面是应用程序的基本代码(文件名:main.py):
- from fastapi import FastAPI
-
- app = FastAPI()
-
- @app.get("/")
- def read_root():
- return {"Hello": "World"}
-
- @app.get("/add/{num1}/{num2}")
- async def addnumbers(num1: int, num2: int):
- return {"sum": num1 + num2}
-
- @app.get("/items/{item_id}")
- async def read_item(item_id: int, q: str = None):
- return {"item_id": item_id, "q": q}
这个代码块包含三个API端点,分别是:
在上述代码中,@app是FastAPI的装饰器。例如,@app.get()然后为此特定HTTP方法和类提供URL路径,可以扩展这些路由来接收参数,并返回响应。不同路径的处理函数中的参数,例如num1, num2和item_id,在FastAPI中具有自动校验和转换的能力。
我们还需要通过以下命令在本地运行应用程序:uvicorn main:app --reload。其中main是我们的文件名,app是FastAPI应用程序对象的实例化。–reload则是让应用程序在代码更改时自动重新加载。
完成以上步骤,您可以访问http://localhost:8000/add/5/10页面来浏览您的Web应用程序。
FastAPI是一个现代化、高性能的Python Web框架,它能够帮助开发者快速构建Web应用程序。我们在本文中介绍了如何安装FastAPI及其依赖项,并演示了如何使用FastAPI构建一个简单的Web应用程序。由于FastAPI的性能优异,我们推荐开发者尝试使用FastAPI来开发其自己的Web应用程序。
FastAPI支持多种类型的请求参数和响应体,例如查询参数、路径参数、请求体和响应体。它会自动对请求参数类型进行校验,确保请求参数结构正确且类型正确。以下是一些实例:
1.查询参数
查询参数通常用于过滤查询结果,相当于在URL路径后添加?key1=value1&key2=value2。FastAPI可以直接将查询参数转换为Python对象,例如:
- from fastapi import FastAPI
-
- app = FastAPI()
-
- @app.get("/items/")
- async def read_items(q: str = None):
- """
- q:查询参数
- """
-
- results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
- if q:
- results.update({"q": q})
- return results
访问http://localhost:8000/items/?q=test可以在查询参数q中传递test字符串,并将其添加到JSON响应中。结果将如下所示:
- {
- "items": [
- {
- "item_id": "Foo"
- },
- {
- "item_id": "Bar"
- }
- ],
- "q": "test"
- }
2.路径参数
路径参数通常用于唯一地标识资源,例如路径/items/{item_id}。FastAPI会自动将路径参数转换为相应的Python类型,例如:
- from fastapi import FastAPI
-
- app = FastAPI()
-
- @app.get("/items/{item_id}")
- async def read_item(item_id: int, q: str = None):
- """
- item_id: 路径参数
- q: 查询参数
- """
-
- results = {"item_id": item_id}
- if q:
- results.update({"q": q})
- return results
访问http://localhost:8000/items/42可以将42作为路径参数item_id传递并将其添加到JSON响应中。结果将如下所示:
- {
- "item_id": 42
- }
3.请求体
请求体通常用于包含需要处理的数据,FastAPI支持各种类型的请求体,例如JSON,表单,多部分文件等。以下是JSON请求体的示例:
- from fastapi import FastAPI
- from pydantic import BaseModel
-
- class Item(BaseModel):
- name: str
- price: float
- is_offer: bool = None
-
- app = FastAPI()
-
- @app.post("/items/")
- async def create_item(item: Item):
- """
- item:请求体
- """
- return item

将以下JSON请求体添加到POST请求http://localhost:8000/items/:
- {
- "name": "Foo",
- "price": 42.0
- }
结果将如下所示:
- {
- "name": "Foo",
- "price": 42.0,
- "is_offer": null
- }
4.响应体
响应体可以是任何Python类型,但通常使用Pydantic模型。Pydantic模型是Python 3.6+的数据验证和序列化/反序列化库。以下是一个Pydantic模型的示例:
- from fastapi import FastAPI
- from pydantic import BaseModel
-
- class Item(BaseModel):
- name: str
- price: float
- is_offer: bool = None
-
- class ItemResponse(BaseModel):
- item_id: int
- item: Item
-
- app = FastAPI()
-
- @app.post("/items/", response_model=ItemResponse)
- async def create_item(item: Item):
- return {"item_id": 1, "item": item}

在上面的示例中,我们使用response_model参数告诉FastAPI响应的模型是ItemResponse。此模型由两个属性组成:item_id和item。当我们将以下JSON请求体添加到POST请求http://localhost:8000/items/时:
- {
- "name": "Foo",
- "price": 42.0
- }
FastAPI返回以下JSON响应体:
- {
- "item_id": 1,
- "item": {
- "name": "Foo",
- "price": 42.0,
- "is_offer": null
- }
- }
在本文中,我们介绍了FastAPI的基本架构和如何使用它构建一个简单的Web应用程序。我们了解了请求参数和响应体类型,FastAPI能够自动对请求参数类型进行校验,并将Python对象转换为JSON响应体。FastAPI还允许我们在路由处理程序之前解析并注入依赖项。
FastAPI是一个现代化,高性能的Python Web框架。它继承了Python的简单性和快速性,并新增了一些高效的功能,例如异步框架和Pydantic模型等。如果您想构建高效的Web应用程序,FastAPI是一个非常不错的选择。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。