您现在的位置是:首页 >技术教程 >【Python开发】FastAPI 01:hello world网站首页技术教程

【Python开发】FastAPI 01:hello world

尹煜 2024-06-26 14:23:21
简介【Python开发】FastAPI 01:hello world

FastAPI 是一个轻量级的后端框架,对于定制化不高或者功能简单的业务完全可以拿他作为后台。 FastAPI 一个比较重要的特性就是异步,简单来说就是相比 django 和 flask 快,FastAPI 和 flask 的语法类似。本篇文章介绍 FastAPI 运用的简单实例,通过 FastAPI 创建接口输出 "hello world" 字符!

目录

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

main:main.py 文件(一个 Python「模块」)。

app:在 main.py 文件中通过 app = FastAPI() 创建的对象。

--reload:让服务器在更新代码后重新启动,仅在开发时使用该选项。

也可使用 --host 127.0.0.1 --port 8001,进行 ip 地址和端口的指定。

? (2)main 方法启动

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

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

然后可以看到如下输出 ?

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

 若非指定,ip 地址将是 127.0.0.1,端口则是 8000。

2.2 交互式 API 文档

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

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

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

2.3 分步概括

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

from fastapi import FastAPI

app = FastAPI()


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

① 导入 FastAPI

from fastapi import FastAPI

FastAPI 是直接从 Starlette 继承的类。

你可以通过 FastAPI 使用所有的 Starlette 的功能。

② 创建一个 FastAPI「实例」

app = FastAPI()

这里的变量 app 会是 FastAPI 类的一个「实例」。

这个实例将是创建你所有 API 的主要交互对象。

这个 app 同样在如下命令中被 uvicorn 所引用,如 uvicorn main:app --reload

③ 创建一个路径操作

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

@app.get("/")

你可以将 get 操作方法更改成 @app.post()、@app.put()、@app.delete() 等方法

你可以更改相应的路径("/")为自己想要的,例如我更改为("/hello/")

④ 定义路径操作函数

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

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

在这个例子中,它是一个 async 函数,你也可以将 async 去掉。

⑤ 返回内容

    return {"message": "Hello World"}

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

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

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。