首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用FastApi依赖项向OpenAPI模式添加描述

FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API。它基于 Python 类型注解,提供了自动化的请求和响应验证,以及可与 OpenAPI(以前称为 Swagger)和 JSON Schema 集成。

要使用 FastAPI 的依赖项向 OpenAPI 模式添加描述,需要按照以下步骤进行操作:

  1. 安装 FastAPI 和相关依赖:
  2. 安装 FastAPI 和相关依赖:
  3. 导入所需的模块:
  4. 导入所需的模块:
  5. 创建一个 FastAPI 应用程序实例:
  6. 创建一个 FastAPI 应用程序实例:
  7. 定义一个依赖项函数来生成 OpenAPI 模式的额外描述信息:
  8. 定义一个依赖项函数来生成 OpenAPI 模式的额外描述信息:
  9. 创建一个路由函数,并使用 Depends 注入依赖项函数中的数据:
  10. 创建一个路由函数,并使用 Depends 注入依赖项函数中的数据:
  11. 创建一个路由函数,用于获取生成的 OpenAPI 模式(包含附加描述信息):
  12. 创建一个路由函数,用于获取生成的 OpenAPI 模式(包含附加描述信息):
  13. 启动 FastAPI 应用程序:
  14. 启动 FastAPI 应用程序:

以上步骤将向 FastAPI 应用程序添加了一个额外的依赖项函数,该函数用于生成包含附加描述信息的 OpenAPI 模式。通过在路由函数上使用 dependencies 参数来将依赖项应用于特定路由,然后可以通过访问 /openapi.json 路由来获取包含附加描述信息的完整 OpenAPI 模式。

注意:在实际开发中,可以根据自己的需求修改 extra_openapi_info 函数中的标题、版本、描述和服务器等信息。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

FastAPI框架诞生的缘由(下)

它的工作方式是,在 Python 的文档字符串内部使用 YAML 格式的描述来为每一个函数自动生成文档。它会生成 OpenAPI 的 schemas。...https://github.com/tiangolo/full-stack-flask-couchdb 启发 FastAPI 地方: 自动生成的 OpenAPI 模式使用相同的代码定义序列化和验证...依赖注入系统需要对依赖进行预注册,并且将基于已声明的类型解决依赖问题。因此,不可能声明多个组件来提供一个特定的类型。 路由在一个单独的地方声明,函数在另一个地方使用,(而不是在函数顶部使用装饰器)。...最初,它没有自动化 API 文档的 Web UI,但我知道我可以其中添加 Swagger UI。它有一个依赖注入系统。与上面讨论的其他工具一样,它需要组件的预注册。但是,这仍然是一个很棒的功能。...这是 FastAPI 在顶部添加的主要内容之一,全部基于Python类型提示(使用Pydantic)。以及依赖注入系统,安全实用程序,OpenAPI 模式生成等。

2.4K20

Github 火热的 FastAPI 库,站在了这些知名库的肩膀上

尽管其中许多功能都可以通过添加插件来实现。 各个模块之前的解耦,使之成为一个“微框架”,可以通过扩展为精确地提供所需的东西,这是我想要保留的一关键功能。...它的工作方式是,在 Python 的文档字符串内部使用 YAML 格式的描述来为每一个函数自动生成文档。它会生成 OpenAPI 的 schemas。...依赖注入系统需要对依赖进行预注册,并且将基于已声明的类型解决依赖问题。因此,不可能声明多个组件来提供一个特定的类型。 路由在一个单独的地方声明,函数在另一个地方使用,(而不是在函数顶部使用装饰器)。...最初,它没有自动化 API 文档的 Web UI,但我知道我可以其中添加 Swagger UI。它有一个依赖注入系统。与上面讨论的其他工具一样,它需要组件的预注册。但是,这仍然是一个很棒的功能。...这是 FastAPI 在顶部添加的主要内容之一,全部基于Python类型提示(使用Pydantic)。以及依赖注入系统,安全实用程序,OpenAPI 模式生成等。

5.2K30
  • fastapi 安全性 APIRouter BackgroundTasks 元数据 测试调试

    元数据 7.1 标题、描述和版本 7.2 openapi_tags 标签元数据 7.3 OpenAPI URL 7.4 文档 URLs 8. 测试 9....多个应用文件 __init__.py 可以使得目录下的包可以被其他目录导入,该文件可以为空 5.1 APIRouter # dependencies.py # 我们了解到我们将需要一些在应用程序的好几个地方所使用依赖...# 路径 prefix:/items # tags:(仅有一个 items 标签) # 额外的 responses # dependencies:它们都需要我们创建的 X-Token 依赖...URL 添加 openapi_url 参数 app = FastAPI(openapi_tags=tags_metadata, openapi_url="/api/v100/michael.json"...) 如果想完全禁用 OpenAPI 模式,可以将其设置为 openapi_url=None,这样也会禁用使用它的文档用户界面 7.4 文档 URLs 你可以配置两个文档用户界面,包括: Swagger

    1.2K30

    FastAPI从入门到实战(0)——初识FastAPI

    OpenAPI 中定义的安全模式,包括: HTTP 基本认证。 OAuth2 (也使用 JWT tokens)。在 OAuth2 with JWT查看教程。 API 密钥,在: 请求头。...依赖注入 FastAPI 有一个使用非常简单,但是非常强大的依赖注入系统。 甚至依赖也可以有依赖,创建一个层级或者图依赖。 所有自动化处理都由框架完成。...所有的依赖关系都可以从请求中获取数据,并且增加了路径操作约束和自动文档生成。 即使在依赖中被定义的路径操作 也会自动验证。 支持复杂的用户身份认证系统,数据库连接等等。 不依赖数据库,前端等。...通过 FastAPI 你可以获得所有 Pydantic (FastAPI 基于 Pydantic 做了所有的数据处理): 更简单: 没有新的模式定义 micro-language 需要学习。...如果你知道 Python types,你就知道如何使用 Pydantic。

    3.7K20

    Chatgpt-Retrieval-Plugin—GPT AI插件 真正联网的人工智能

    插件由以下组件组成: •一个 API•一个 API 模式OpenAPI JSON 或 YAML 格式)•一个清单(JSON 文件),用于定义插件的相关元数据 每个插件只需要提供一份标准的、接口描述准确的...具体如下: •用户使用自然语言 ChatGPT 提问。•ChatGPT 根据用户的需求去查找符合描述的插件系统。•根据插件系统的 API 描述文档来选择符合当前上下文的 API 进行调用。...docs[4] 包括设置和使用每个向量数据库提供程序、webhooks 以及删除未使用依赖的文档。 examples[5] 提供示例配置、身份验证方法和特定于提供程序的示例。...如果在 pyproject.toml 中添加依赖,请确保运行 poetry lock 和 poetry install。...注意: 如果您在 pyproject.toml 文件中添加了新的依赖,需要运行 poetry lock 和 poetry install 来更新锁定文件并安装新的依赖

    92330

    FastAPI(29)- Dependencies 依赖注入的初步使用

    FastAPI依赖注入 FastAPI 有一个非常强大但直观的依赖注入系统 它被设计为非常易于使用,并且使任何开发人员都可以非常轻松地将其他组件与 FastAPI 集成 什么是依赖注入 在编程中,...、角色管理等 其他使用场景 FastAPI 的兼容性 依赖注入系统的简单性使得 FastAPI 兼容: 所有的关系型数据库 NoSQL 数据库 第三方的包和 API 认证、授权系统 响应数据注入系统 依赖注入的简单栗子...API 文档上测试了,顺便看看长啥样 从文档中也可以看到,/items 要传三个查询参数,其实就是依赖函数的参数 FastAPI 会将所有依赖信息添加OpenAPI Schema 中,以便在...Swagger API 中显示(如上图) 请求数据验证失败的请求结果 即使是依赖FastAPI 也会对它做数据验证,不符合类型则报错 async 或 not async 可以在非 async 路径操作函数中使用...async 的依赖 也可以在 async 路径操作函数中使用非 async 的依赖 FastAPI 知道要怎么处理 # 非 async 依赖 def test_dep(name: str):

    1.9K10

    FastAPI(2)- 快速入门

    //127.0.0.1:8000/docs 查看可选的 API 文档 http://127.0.0.1:8000/redoc OpenAPI FastAPi 使用 API 的 OpenAPI 标准为所有...API 生成 schema schema 是对事物的一种定义或描述 它并非具体的实现代码,而只是抽象的描述 后面会详说 API Schema OpenAPI 是一种规定如何定义 API Schema...的规范 定义的 OpenAPI Schema 将包括 API 路径,以及它们可能使用的参数等等 比如:这个 API 的作用是什么,需要必传哪些参数,请求方法是什么 Data Schema 指的是某些数据比如...原始的 OpenAPI Schema,其实它只是一个自动生成的包含了所有 API 描述的 JSON 数据结构 http://127.0.0.1:8000/openapi.json 拆分代码详解 from...类,必写就对了 FastAPI 是直接从 Starlette 继承的类,可以通过 FastAPI 使用所有的 Starlette 的功能 第二步:创建一个 FastAPI 实例 app = FastAPI

    1.6K30

    从 Flask 切到 FastAPI 后,起飞了!

    本文针对那些有兴趣从 Flask 转移到 FastAPI 的人,比较和对比了 Flask 和 FastAPI 的常见模式。...更多内容请参考 FastAPI 和 Celery 的异步任务:https://testdriven.io/blog/fastapi-and-celery/ 依赖注入 Flask 虽然你可以实现自己的依赖注入解决方案...相反,你需要使用一个外部包,如 flask-injector。 FastAPI 另一方面,FastAPI 具有处理依赖注入的强大解决方案。...Depends 然后用于 FastAPI 指示路由“依赖于” get_db。因此,它应该在路由处理程序中的代码之前执行,并且结果应该“注入”到路由本身。...要了解如何针对生产对其进行全面配置,请查看使用 Postgres、Gunicorn 和 Nginx 教程对 Flask 进行 Docker 化。

    73910

    FastAPI(15)- 声明请求示例数据

    前言 FastAPI 可以给 Pydantic Model 或者路径函数声明需要接收的请求示例,而且可以显示在 OpenAPI 文档上 有几种方式,接下来会详细介绍 Pydantic 的 schema_extra...使用 Pydantic 的 Field() 时,可以将任何其他任意参数添加到函数参数中,来声明 JSON Schema 的额外信息 Field 的 extra 参数 默认 Field 是没有 example...或 examples 参数,FastAPI 会自动将 example、examples 的值添加OpenAPI 文档中 总结 Pydantic 并没有直接支持 example 参数,而 FastAPI...进行了扩展,直接支持添加 example、examples 参数 使用 Body() ,添加 example 参数 #!...Body() ,添加 examples 参数 examples 本身是一个 dict,每个键标识一个具体的示例,而键对应的值也是一个 dict 每个示例 dict 可以包含 summary:简短描述

    83130

    FastAPI框架诞生的缘由(上)

    尽管其中许多功能都可以通过添加插件来实现。 各个模块之前的解耦,使之成为一个“微框架”,可以通过扩展为精确地提供所需的东西,这是我想要保留的一关键功能。...然后我发现 API 文档有一个标准叫 Swagger ,它使用 JSON 或 YAML 来描述。 并且 Swagger API 的 Web 用户界面已经被人创建出来了。...因此,能够为 API 生成Swagger 文档将允许自动使用此 Web 用户界面。 在某个时候,Swagger 被授予 Linux Foundation,将其重命名为 OpenAPI。...这就是为什么在谈论版本 2.0 时通常会说“ Swagger”,对于版本3+来说是“ OpenAPI”。 启发 FastAPI 地方: 为API规范采用开放标准,而不是使用自定义架构。...并集成基于标准的用户界面工具: Swagger UI ReDoc 选择这两个是因为它们相当受欢迎且稳定,但是通过快速搜索,您可以找到数十个 OpenAPI 的其他替代用户界面(可以与FastAPI一起使用

    2.3K10

    FastAPI – 一个现代高性能Python Web框架及其示例

    FastAPI是一个用于构建API的现代、高性能Python web框架。它使用标准的Python类型提示来支持数据自动验证和API文档自动生成。...FastAPI使用Python 3.6+的类型提示来声明参数、请求体、响应模型等,而其他框架需要额外的库或插件来实现数据验证和序列化。...此外,FastAPI基于OpenAPI和JSON Schema标准,可以自动生成交互式API文档和多种语言的客户端代码。它是一个微框架,只提供最基本的功能,而其他功能可以通过插件或依赖添加。...下面使用FastAPI来写一个示例代码,提供访问google关键词的web服务,需要做以下几个步骤: 导入FastAPI和其他需要的库,如requests。 创建一个FastAPI实例。...IP 设置代理IP,添加用户名和密码 proxy_ip = "www.16yun.cn" proxy_port = "31111" proxy_username = "16YUN

    66440

    FastAPI学习-4.get 请求 query params 参数校验

    在本例中,适用于字符串的 max_length 参数: q: str = Query(None, max_length=50) 将会校验数据,在数据无效时展示清晰的错误信息,并在 OpenAPI 模式的路径操作中记录该参数...添加更多校验 你还可以添加 min_length 参数: from typing import Optional from fastapi import FastAPI, Query app = FastAPI...但是,一旦你需要用到并去学习它们时,请了解你已经可以在 FastAPI 中直接使用它们。...默认值 你可以 Query 的第一个参数传入 None 用作查询参数的默认值,以同样的方式你也可以传递其他默认值。...声明更多元数据 你可以添加更多有关该参数的信息。 这些信息将包含在生成的 OpenAPI 模式中,并由文档用户界面和外部工具所使用

    1.4K20

    一日一技:FastAPI如何关闭接口文档?

    你试一试把/docs改成/redoc看看: 要关闭 redoc也可以使用相同的方法: app = FastAPI(docs_url=None, redoc_url=None) 运行效果如下图所示: 关于这两个参数的更多详情...,比如说保留文档,但是把网址改名,可以参阅官方文档:Metadata and Docs URLs - FastAPI[2] 如何自动切换 在开发阶段,我想要文档,在部署的时候,我不想要文档。...实际上不用,我们可以使用环境变量来自动控制,实现只有显式添加环境变量env=develop的时候才显示文档,其他情况下都不显示。...,我们在环境变量中添加env,它的值为develop,于是文档自动打开。.../path-operation-advanced-configuration/#exclude-from-openapi [2] Metadata and Docs URLs - FastAPI: https

    6.3K30

    FastAPI 学习之路(四十三)路径操作的高级配置

    前言 上一篇我们分享了FastAPI 学习之路(四十二)利用Docker部署发布,这次我们分享下路径的高级配置。...正文 在实际的开发中呢,我们可能有些接口呢,不能对比进行开放,比如说我们内部的一些监控的接口,那么我们肯定想着如何在接口文档中进行屏蔽,那么我们看下应该如何实现呢。...docstring 的高级描述 路径操作函数 的 docstring 中用于 OpenAPI 的行数。...添加一个 \f (一个「换页」的转义字符)可以使 FastAPI 在那一位置截断用于 OpenAPI 的输出。...我们可以看到,在接口文档中,我们去描述了我们的参数。文档内正常展示了,那么我们可以用这个,对接口的参数进行一些描述后,就可以展示在我们对外的接口文档中,方便去理解每个字段。

    40210

    FastAPI or Flask?从用户出发,才是王道

    此外,Flask 有一个简单且易于扩展的核心,用户在使用 Flask 开发网站时,可以根据自己的需求添加不同的功能,各种插件库可以让用户完全按照自己的意愿开发出功能强大的网站。...FastAPI 支持 OpenAPI(前身是 Swagger)和 Redoc 两种文档格式。对于使用者来说,不用花费大量时间写额外的接口文档。...FastAPI 提供的 OpenAPI 文档如图: Why FastAPI 在为 Milvus Bootcamp 中的项目选择 Web 应用框架时,我们调研了包括 Django、Flask、FastAPI...FastAPI 的开发和使用更加简单,使得 Milvus 数据库的用户在学习了解 Milvus Bootcamp 中的项目时,可以更多地关注项目本身的具体实现,而不用花费过多的时间去学习依赖的 Web...Flask 是一个早期的 Web 框架,在基础功能之上还支持灵活地添加各种插件,具备完善的功能,也有完善的官方文档和大量用户发布的使用经验,以及活跃的用户社区。

    3.6K10
    领券