欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > Python FastApi(2):基础使用

Python FastApi(2):基础使用

2025/3/26 18:18:17 来源:https://blog.csdn.net/qq_40298351/article/details/146412229  浏览:    关键词:Python FastApi(2):基础使用

1 最简单的程序

        最简单的 FastAPI 文件可能像下面这样:

from fastapi import FastAPIapp = FastAPI()@app.get("/")
async def root():return {"message": "Hello World"}

        进入文件所在目录,运行实时服务器。

uvicorn Test:app --reload

   uvicorn main:app 命令含义如下:

  • TestTest.py 文件(一个 Python「模块」)。
  • app:在 Test.py 文件中通过 app = FastAPI() 创建的对象。
  • --reload:让服务器在更新代码后重新启动。仅在开发时使用该选项。

        打开浏览器访问 http://127.0.0.1:8000。

1.1 交互式 API 文档

        跳转到 http://127.0.0.1:8000/docs。你将会看到自动生成的交互式 API 文档(由 Swagger UI 提供):

1.2 可选的 API 文档¶

        前往 http://127.0.0.1:8000/redoc。你将会看到可选的自动生成文档 (由 ReDoc 提供):

1.3 OpenAPI

        FastAPI 使用定义 API 的 OpenAPI 标准将你的所有 API 转换成「模式」。

  • 「模式」:是对事物的一种定义或描述。它并非具体的实现代码,而只是抽象的描述。
  • API「模式」:在这种场景下,OpenAPI 是一种规定如何定义 API 模式的规范。定义的 OpenAPI 模式将包括你的 API 路径,以及它们可能使用的参数等等。
  • 数据「模式」:这个术语也可能指的是某些数据比如 JSON 的结构。在这种情况下,它可以表示 JSON 的属性及其具有的数据类型,等等。

        OpenAPI 为你的 API 定义 API 模式。该模式中包含了你的 API 发送和接收的数据的定义(或称为「模式」),这些定义通过 JSON 数据模式标准 JSON Schema 所生成。如果你对原始的 OpenAPI 模式长什么样子感到好奇,其实它只是一个自动生成的包含了所有 API 描述的 JSON。

        你可以直接在:http://127.0.0.1:8000/openapi.json 看到它。

{"openapi": "3.1.0","info": {"title": "FastAPI","version": "0.1.0"},"paths": {"/": {"get": {"summary": "Root","operationId": "root__get","responses": {"200": {"description": "Successful Response","content": {"application/json": {"schema": {}}}}}}}}
}

        驱动 FastAPI 内置的 2 个交互式文档系统的正是 OpenAPI 模式。并且还有数十种替代方案,它们全部都基于 OpenAPI。你可以轻松地将这些替代方案中的任何一种添加到使用 FastAPI 构建的应用程序中。你还可以使用它自动生成与你的 API 进行通信的客户端代码。例如 web 前端,移动端或物联网嵌入程序。

2 步骤概括

2.1 导入 FastAPI

from fastapi import FastAPI

    FastAPI 是一个为你的 API 提供了所有功能的 Python 类。FastAPI 是直接从 Starlette 继承的类。你可以通过 FastAPI 使用所有的 Starlette 的功能。

2.2 创建一个 FastAPI「实例」

app = FastAPI()

        这里的变量 app 会是 FastAPI 类的一个「实例」。这个实例将是创建你所有 API 的主要交互对象。这个 app 同样在如下命令中被 uvicorn 所引用:

uvicorn main:app --reload

2.3 创建一个路径操作

        这里的「路径」指的是 URL 中从第一个 / 起的后半部分。路径」也通常被称为「端点」或「路由」。开发 API 时,「路径」是用来分离「关注点」和「资源」的主要手段。所以,在一个这样的 URL 中:

https://example.com/items/foo

        路径会是:

/items/foo

        @app.get("/") 这里的「操作」指的是一种 HTTP「方法」。分别是:

  • POST
  • GET
  • PUT
  • DELETE

        以及更少见的几种:

  • OPTIONS
  • HEAD
  • PATCH
  • TRACE

        在 HTTP 协议中,你可以使用以上的其中一种(或多种)「方法」与每个路径进行通信。在开发 API 时,你通常使用特定的 HTTP 方法去执行特定的行为。  因此,在 OpenAPI 中,每一个 HTTP 方法都被称为「操作」。通常使用:

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

   @app.get("/") 告诉 FastAPI 在它下方的函数负责处理如下访问请求:

  • 请求路径为 /
  • 使用 get 操作

        你也可以使用其他的操作:

  • @app.post()
  • @app.put()
  • @app.delete()

        以及更少见的:

  • @app.options()
  • @app.head()
  • @app.patch()
  • @app.trace()

2.4 路径操作函数

这是我们的「路径操作函数」:

  • 路径:是 /
  • 操作:是 get
  • 函数:是位于「装饰器」下方的函数(位于 @app.get("/") 下方)。
@app.get("/")
async def root(): # 路径操作函数return {"message": "Hello World"}

        这是一个 Python 函数。每当 FastAPI 接收一个使用 GET 方法访问 URL「/」的请求时这个函数会被调用。在这个例子中,它是一个 async 函数。你也可以将其定义为常规函数而不使用 async def:

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

        async / await 在执行操作函数中将等待 await 返回结果。 

    2.5 返回内容

    @app.get("/")
    def root():return {"message": "Hello World"} # 返回内容

            你可以返回一个 dictlist,像 strint 一样的单个值,等等。还可以返回 Pydantic 模型。还有许多其他将会自动转换为 JSON 的对象和模型(包括 ORM 对象等)。尝试下使用你最喜欢的一种,它很有可能已经被支持。

    版权声明:

    本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

    我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

    热搜词