当前位置:   article > 正文

python之fastapi快速构建web应用程序_fastapi python3.12

fastapi python3.12

目录

一、安装及依赖

二、基本架构

三、使用FastAPI实现Web应用程序

四、请求参数和响应

五、总结


FastAPI是一个现代的、快速的Web框架,它能够帮助开发者快速构建高性能的Web应用程序。它基于Python 3.6及以上版本,采用异步框架:ASGI。本文将对FastAPI的基本架构和使用进行详细介绍,并通过一个示例应用程序来演示其功能。

一、安装及依赖


在开始快速构建Web应用程序之前,首先需要安装FastAPI和相关依赖。我们可以使用Python自带的pip包管理器来安装FastAPI。在命令行窗口中输入以下命令即可:

  1. pip install fastapi
  2. pip install uvicorn[standard]

其中,uvicorn是一个基于ASGI的Python Web Server Gateway Interface服务器,用于将我们的应用程序运行在本地开发环境中。

二、基本架构


FastAPI基于ASGI异步框架构建,这意味着我们可以使用异步Python来提供更高效的Web应用程序。FastAPI包含以下主要部分:

  1. 路由器:用于定义应用程序的路由和处理函数。
  2. 请求体和响应体:FastAPI自动将JSON请求体转换为Python对象,并将Python对象转换为JSON响应体。
  3. 中间件:用于在请求和响应之间添加额外的处理。
  4. 依赖项:在执行路由处理程序之前解析并注入依赖项。

三、使用FastAPI实现Web应用程序


为了演示FastAPI的使用方法,我们将使用它来构建一个简单的Web应用程序。我们的应用程序将提供以下API功能:

  1. 添加两个数字,返回和。
  2. 使用路径参数返回一个字符串。

下面是应用程序的基本代码(文件名:main.py):

  1. from fastapi import FastAPI
  2. app = FastAPI()
  3. @app.get("/")
  4. def read_root():
  5. return {"Hello": "World"}
  6. @app.get("/add/{num1}/{num2}")
  7. async def addnumbers(num1: int, num2: int):
  8. return {"sum": num1 + num2}
  9. @app.get("/items/{item_id}")
  10. async def read_item(item_id: int, q: str = None):
  11. return {"item_id": item_id, "q": q}

这个代码块包含三个API端点,分别是:

  1. 根目录‘/’(即Http://localhost:8000/)返回一个简单的JSON响应。
  2. ‘/add/{num1}/{num2}’ 用于将路径参数num1和num2相加,并返回结果。
  3. ‘/items/{item_id}’ 接收一个路径参数item_id和一个查询参数q,返回JSON响应。

在上述代码中,@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对象,例如:

  1. from fastapi import FastAPI
  2. app = FastAPI()
  3. @app.get("/items/")
  4. async def read_items(q: str = None):
  5. """
  6. q:查询参数
  7. """
  8. results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
  9. if q:
  10. results.update({"q": q})
  11. return results

访问http://localhost:8000/items/?q=test可以在查询参数q中传递test字符串,并将其添加到JSON响应中。结果将如下所示:

  1. {
  2. "items": [
  3. {
  4. "item_id": "Foo"
  5. },
  6. {
  7. "item_id": "Bar"
  8. }
  9. ],
  10. "q": "test"
  11. }

2.路径参数
路径参数通常用于唯一地标识资源,例如路径/items/{item_id}。FastAPI会自动将路径参数转换为相应的Python类型,例如:

  1. from fastapi import FastAPI
  2. app = FastAPI()
  3. @app.get("/items/{item_id}")
  4. async def read_item(item_id: int, q: str = None):
  5. """
  6. item_id: 路径参数
  7. q: 查询参数
  8. """
  9. results = {"item_id": item_id}
  10. if q:
  11. results.update({"q": q})
  12. return results

访问http://localhost:8000/items/42可以将42作为路径参数item_id传递并将其添加到JSON响应中。结果将如下所示:

  1. {
  2. "item_id": 42
  3. }

3.请求体
请求体通常用于包含需要处理的数据,FastAPI支持各种类型的请求体,例如JSON,表单,多部分文件等。以下是JSON请求体的示例:

  1. from fastapi import FastAPI
  2. from pydantic import BaseModel
  3. class Item(BaseModel):
  4. name: str
  5. price: float
  6. is_offer: bool = None
  7. app = FastAPI()
  8. @app.post("/items/")
  9. async def create_item(item: Item):
  10. """
  11. item:请求体
  12. """
  13. return item

将以下JSON请求体添加到POST请求http://localhost:8000/items/:

  1. {
  2. "name": "Foo",
  3. "price": 42.0
  4. }

结果将如下所示:

  1. {
  2. "name": "Foo",
  3. "price": 42.0,
  4. "is_offer": null
  5. }

4.响应体
响应体可以是任何Python类型,但通常使用Pydantic模型。Pydantic模型是Python 3.6+的数据验证和序列化/反序列化库。以下是一个Pydantic模型的示例:

  1. from fastapi import FastAPI
  2. from pydantic import BaseModel
  3. class Item(BaseModel):
  4. name: str
  5. price: float
  6. is_offer: bool = None
  7. class ItemResponse(BaseModel):
  8. item_id: int
  9. item: Item
  10. app = FastAPI()
  11. @app.post("/items/", response_model=ItemResponse)
  12. async def create_item(item: Item):
  13. return {"item_id": 1, "item": item}

在上面的示例中,我们使用response_model参数告诉FastAPI响应的模型是ItemResponse。此模型由两个属性组成:item_id和item。当我们将以下JSON请求体添加到POST请求http://localhost:8000/items/时:

  1. {
  2. "name": "Foo",
  3. "price": 42.0
  4. }

FastAPI返回以下JSON响应体:

  1. {
  2. "item_id": 1,
  3. "item": {
  4. "name": "Foo",
  5. "price": 42.0,
  6. "is_offer": null
  7. }
  8. }

五、总结


在本文中,我们介绍了FastAPI的基本架构和如何使用它构建一个简单的Web应用程序。我们了解了请求参数和响应体类型,FastAPI能够自动对请求参数类型进行校验,并将Python对象转换为JSON响应体。FastAPI还允许我们在路由处理程序之前解析并注入依赖项。

FastAPI是一个现代化,高性能的Python Web框架。它继承了Python的简单性和快速性,并新增了一些高效的功能,例如异步框架和Pydantic模型等。如果您想构建高效的Web应用程序,FastAPI是一个非常不错的选择。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/889449
推荐阅读
相关标签
  

闽ICP备14008679号