Python FastAPI 开始一个 HelloWorld 项目及 OpenAPI 介绍

举报
宇宙之一粟 发表于 2022/10/31 16:30:53 2022/10/31
【摘要】 开始 HelloWorld 项目在深入研究 Web 项目如何开发之前,我们可以在 FastAPI 中建立并运行传统的 "Hello World "应用程序。这可以证明我们的初始设置是正常工作的。打开 Vim 或其他的 Python 编辑器,把下面的代码粘贴到一个叫做 main.py 的文件中。写入如下代码:from fastapi import FastAPI # 1. 导入 FastAP...

开始 HelloWorld 项目

在深入研究 Web 项目如何开发之前,我们可以在 FastAPI 中建立并运行传统的 "Hello World "应用程序。这可以证明我们的初始设置是正常工作的。

打开 Vim 或其他的 Python 编辑器,把下面的代码粘贴到一个叫做 main.py 的文件中。写入如下代码:

from fastapi import FastAPI # 1. 导入 FastAPI

app = FastAPI() # 2. 创建一个 FastAPI 实例

@app.get('/') # 3. 创建一个路径操作
async def root(): # 4. 定义路径操作函数
    return {'message': 'Hello World!'} # 5. 返回内容

这五行代码中,你已经创建了一个工作的 API 。如果你曾经使用过 Flask ,这看起来应该非常熟悉。

image.png

  • 路由 @app.get('/'): 它告诉 FastAPI,当用户请求根/ 路径时,应该运行以下方法。

  • 方法定义 async def root() : 注意这个异步定义,这个方法将作为一个 Python3 协程 运行。如果你想了解更多关于并发性和 async 的信息,FastAPI 官方文档对其有一个很好的解释,以及是什么让 FastAPI 框架变得如此快速。

最后是返回语句,我们将数据发送到浏览器。

    return {'message': 'Hello World!'}

正如你所期望的,访问这个端点将返回一个与上述字典相匹配的 JSON 响应数据。

最后,说得够多了,运行服务器看看它的运行情况吧!

uvicorn main:app --reload

启动成功如图所示:

image.png

uvicorn main:app 命令含义如下:

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

在输出中,会有一行信息像下面这样:

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

该行显示了你的应用在本机所提供服务的 URL 地址。

说了这么多,我们打开浏览器访问 http://127.0.0.1:8000,可以看到如下的 JSON 响应:

{ "message": "Hello World!" }

也可以运行http://127.0.0.1:8000/docs ,运行这个服务器文档,可以看到基于 Swagger UI 自动生成的交互式 API 文档:

image.png

本框架还提供了一个可选的 API 文档,在浏览器运行 http://127.0.0.1:8000/redoc,可以看到如下由 ReDoc 自动生成的文档,如图:

image.png

OpenAPI

OpenAPI 规范(以前称为 Swagger 规范)是用于描述,生成,使用和可视化 RESTful Web 服务的机器可读接口文件的规范。

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

模式

模式是对事物的一种定义或描述。它并非具体的实现代码,而只是抽象的描述。

API 模式

在这种场景下,OpenAPI 是一种规定如何定义 API 模式的规范。定义的 OpenAPI 模式将包括你的 API 路径,以及它们可能使用的参数等等。

数据模式

模式这个术语也可能指的是某些数据比如 JSON 的结构。在这种情况下,它可以表示 JSON 的属性及其具有的数据类型,等等。

OpenAPI 和 JSON Schema

OpenAPI 为你的 API 定义 API 模式。该模式中包含了你的 API 发送和接收的数据的定义(或称为 Schema,模式),这些定义通过 JSON 数据模式标准 JSON Schema 所生成。

FastAPI 中 OpenAPI 的用途

驱动 FastAPI 内置的 2 个交互式文档系统的正是 OpenAPI 模式。

并且还有数十种替代方案,它们全部都基于 OpenAPI。你可以轻松地将这些替代方案中的任何一种添加到使用 FastAPI 构建的应用程序中。

你还可以使用它自动生成与你的 API 进行通信的客户端代码。例如 web 前端,移动端或物联网嵌入程序。

总结

本文介绍了 Python 中 FastAPI 这一框架,并利用其建立了一个快速的 HelloWorld 项目 API,最后介绍了关于 OpenAPI 的规范和其在 FastAPI 中的作用。希望能引入 Python 爱好者对这一框架的学习。

希望本文能对你有所帮助,如果喜欢本文,可以点个赞或者关注,十分感谢!

这里是宇宙之一粟,下一篇文章见!

宇宙古今无有穷期,一生不过须臾,当思奋争。

灵感来源:

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。