目录

1 FastAPI 介绍及安装

1.1 介绍

1.2 FastAPI 安装

① 一步到位

② 分步安装

2 hello world

2.1 demo

2.2 交互式 API 文档

2.3 分步概括

① 导入 FastAPI

② 创建一个 FastAPI「实例」

③ 创建一个路径操作

④ 定义路径操作函数

⑤ 返回内容


1 FastAPI 介绍及安装

1.1 介绍

FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于标准的 Python 类型提示。

文档:FastAPI (tiangolo.com)

源码:https://github.com/tiangolo/fastapi

📌 主要特性:

  • 快速:可与 NodeJS 和 Go 并肩的极高性能(归功于 Starlette 和 Pydantic),最快的 Python web 框架之一。
  • 高效编码:提高功能开发速度约 200% 至 300%。
  • 更少 bug:减少约 40% 的人为(开发者)导致错误。
  • 智能:极佳的编辑器支持。处处皆可自动补全,减少调试时间。
  • 简单:设计的易于使用和学习,阅读文档的时间更短。
  • 简短:使代码重复最小化。通过不同的参数声明实现丰富功能。bug 更少。
  • 健壮:生产可用级别的代码。还有自动生成的交互式文档。
  • 标准化:基于(并完全兼容)API 的相关开放标准:OpenAPI (以前被称为 Swagger) 和 JSON Schema。

以上是 FastAPI 对自己的一顿猛夸~

1.2 FastAPI 安装

① 一步到位

pip install "fastapi[all]"

以上安装还包括了 uvicorn,可看作是 FastAPI 运行代码的服务器。

② 分步安装

如果想将应用程序部署到生产环境,可以执行以下操作:

pip install fastapi
pip install "uvicorn[standard]"

2 hello world

2.1 demo

将下面的内容丢到 main.py 的文件

from fastapi import FastAPI

app = FastAPI()


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

📌 (1)终端启动

使用终端开启 uvicorn 服务

uvicorn main:app --reload

📌 (2)main 方法启动

有时我们可以直接用 main 方法启动,这样更方便些

if __name__ == '__main__':
    import uvicorn
    uvicorn.run(app,host="127.0.0.1",port=8080)

然后可以看到如下输出 👇

【Python开发】FastAPI 01:hello world-LMLPHP

然后打开浏览器,输入127.0.0.1:8000 👇,可看到如下如下 JSON 响应,说明项目启动成功!

【Python开发】FastAPI 01:hello world-LMLPHP

2.2 交互式 API 文档

FastAPI 还提供自动生成接口文档的功能,如果是 spring boot 项目的话则需要引入 swagger 依赖了,该 API 文档严格遵循 OpenAPI 标准。

书接上文,此时访问 http://127.0.0.1:8000/docs#/,你将会看到自动生成的API交互文档 👇

【Python开发】FastAPI 01:hello world-LMLPHP

前后端可以根据该接口文档进行交互或是进行接口测试。

2.3 分步概括

编写一个 FastAPI 程序大致分为五步,下边是一个完整的例子:

from fastapi import FastAPI

app = FastAPI()


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

① 导入 FastAPI

from fastapi import FastAPI

② 创建一个 FastAPI「实例」

app = FastAPI()

③ 创建一个路径操作

这里的「路径」指的是 URL 中从第一个 / 起的后半部分,比如 https://example.com/items/foo 的路径便是 /items/foo。 

@app.get("/")

④ 定义路径操作函数

「路径操作函数」可做如此区分:

  • 路径:是 /。
  • 操作:是 get。
  • 函数:是位于「装饰器」下方的函数(位于 @app.get("/") 下方)。
def root():

⑤ 返回内容

    return {"message": "Hello World"}

你可以返回一个 dict、list,像 str、int 一样的单个值,等等。

你还可以返回 Pydantic 模型,都将自动转换为 JSON 的对象和模型(包括 ORM 对象等)。

05-26 02:11