美文网首页
FastAPI 入门

FastAPI 入门

作者: 狄仁杰666 | 来源:发表于2024-07-31 16:07 被阅读0次

前言

来啦老铁!

许久不见,甚是想念~

最近偶然看到一个 python web 框架,刚好又需要搭建一个后端,因此就打算练练手,顺便记录一下,它就是:

  • FastAPI

学习路径

  1. 认识 FastAPI;
  2. FastAPI 与 Flask 对比;
  3. 安装 FastAPI;
  4. 运行第一个 FastAPI 应用;
  5. API 文档;
  6. APIRouter;
  7. 启动 server 指定端口;

1. 认识 FastAPI;

FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,专为在 Python 中构建 RESTful API 而设计。。

FastAPI 使用 Python 3.8+ 并基于标准的 Python 类型提示。

FastAPI 建立在 Starlette 和 Pydantic 之上,利用类型提示进行数据处理,并自动生成API文档。

FastAPI 于 2018 年 12 月 5 日发布第一版本,以其易用性、速度和稳健性在开发者中间迅速流行起来。

FastAPI 支持异步编程,可在生产环境中运行。

【以上,引用自网络文章】

2. FastAPI 与 Flask 对比;

FastAPI 是一个现代化的 Python web 框架,它提供了高性能和易用性。与之相比,Flask 是一个轻量级的 Python web 框架,也是非常受欢迎的。

以下是 FastAPI 与 Flask 的一些对比:

性能:FastAPI 比 Flask 更快。它使用了基于类型的请求参数验证和响应模型,以及异步请求处理,从而提供了更好的性能。

类型提示:FastAPI 支持使用 Python 的类型提示来定义请求参数和响应模型,这使得代码更加清晰和易于维护。而 Flask 则需要使用额外的库来实现类似的功能。

异步支持:FastAPI 支持异步请求处理,这意味着它可以处理更多的并发请求,从而提高性能。而 Flask 在处理异步请求方面相对较弱。

文档生成:FastAPI 自带了自动生成 API 文档的功能,可以通过访问特定的 URL 来查看 API 文档。而 Flask 需要使用额外的库来实现类似的功能。

生态系统:Flask 有一个庞大的生态系统,拥有大量的第三方扩展和插件。而 FastAPI 相对较新,生态系统相对较小,但在不断增长。

总的来说,FastAPI 是一个更现代化和高性能的框架,特别适合构建高性能的 API 服务。而 Flask 则更适合构建小型的 web 应用和快速原型开发。选择哪个框架取决于项目的需求和开发团队的偏好。

【以上,引用自 AI 的回复,看着还挺靠谱】

3. 安装 FastAPI;

  • 安装 fastapi 包;
pip install fastapi
  • 另外我们还需要一个 ASGI 服务器,生产环境可以使用 Uvicorn 或者 Hypercorn:
    (实际上,安装 fastapi 时已经默认安装了,如果没有,再安装也不迟)
pip install "uvicorn[standard]"

4. 运行第一个 FastAPI 应用;

  • 例如,在项目中创建一个文件 main.py,并写入代码:
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}
  • 启动应用;
uvicorn main:app --reload
启动应用

其中:main 为文件名,--reload 代表热启动,即有代码变更时会自动重启服务,生产肯定是不能用这个参数的。

  • 调用接口;
  • 浏览器打开 url 进行接口 get 调用:
调用接口

5. API 文档;

FastAPI 已经帮我们集成好了 Swagger,我们可以直接在浏览器访问以下 url 以访问 Swagger UI:

Swagger UI

还挺方便的,不用像其他有些框架如 Flask 需要自己集成这一部分。

Swagger 此处就不做介绍了~

6. APIRouter;

实际场景中,我们不可能把所有接口都在 main.py 里头声明,即不可能所有的接口都放在一个文件中进行管理,就像 SpringBoot 中,我们会编写多个 controller 一样。

此时需要用到 FastAPI 的 router 进行管理,步骤演示如下:
a. 项目下创建文件夹,如 router;
b. 在 router 下创建多个 .py 文件,例如创建 product.py 和 user.py 进行演示;

router 1

c. 编写 product.py 和 user.py,分别声明接口,例如:
product.py

from fastapi import APIRouter

router = APIRouter(
    prefix='/product',
    tags=['router for product']
)


@router.get("/info")
def get_product_info():
    return {
        "name": "product 1",
        "stock": 100
    }

user.py

from fastapi import APIRouter

router = APIRouter(
    prefix='/user',
    tags=['router for user']
)


@router.get("/info")
def get_product_info():
    return {
        "name": "dylan zhang",
        "age": 18
    }

d. 修改 main.py,主要将接口声明改为引用自上述 router,例如:

from fastapi import FastAPI

from routers import product, user

app = FastAPI()


@app.get("/", summary="ping", deprecated=False)
async def ping():
    return "success"


app.include_router(product.router)
app.include_router(user.router)

e. 保存后,接口文档变为:

接口文档

f. 此时,我们可以访问通过 router 声明的接口了,例如:

接口 1 接口 2

7. 启动 server 指定端口;

有时候我们需要指定端口启动 server,这时候我们可以类似这么做:

uvicorn main:app --port 8001 --reload

如上,我们在 8001 端口启动了我们的 server。

uvicorn 更多可用参数,可以使用以下命令进行查阅:

uvicorn --help

关于 FastAPI 更多内容,我们可以参考其他教程。

FastAPI 更多内容包含:

  • GET 请求参数;
  • POST/PUT 请求;
  • FastAPI Pydantic 模型;
  • FastAPI 路径操作依赖项;
  • 等~

这些网上已经有很多教程了,当前,请读者自行脑补~

今天就到这吧,能力有限,欢迎指正、互相交流,感谢~

如果本文对您有帮助,麻烦点赞、关注!

感谢~

相关文章

网友评论

      本文标题:FastAPI 入门

      本文链接:https://www.haomeiwen.com/subject/yqpnhjtx.html