获取FastAPI

请添加图片描述


前言

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

关键特性:

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

FastAPI文档
FastAPI源码


一、什么是FastAPI

FastAPI 是一个基于 Python 的现代、高性能的 Web 框架,用于构建 API。它由 Sebastián Ramírez 创建,并在 Python 3.7+ 上运行。FastAPI 提供了许多功能,包括自动化的 API 文档生成、类型注解的支持、异步请求处理等,同时还能够以非常高的性能运行。它的设计目标是结合了 Flask 的简单性和 Django 的功能性,同时具备异步处理请求的能力,使得它在构建现代 Web 应用程序时非常受欢迎。

当与 Flask 和 Django 进行对比时,FastAPI 有其独特的优势和特点:

  1. 性能:
    FastAPI 是基于 Starlette 框架构建的,它利用了 Python 3.7+ 的新功能,如类型注解和异步编程,因此在性能上通常比 Flask 和 Django 更快。FastAPI 的异步请求处理能力使其能够处理大量的并发请求,从而提高了性能。

  2. 类型注解和自动文档生成:
    FastAPI 利用 Python 3.7+ 中的类型注解,可以更好地定义 API 参数和返回值的类型。这使得代码更具可读性,也使得 FastAPI 能够自动生成交互式的 API 文档,包括参数和返回值的类型信息,从而减少了文档维护的工作量。
    虽然 Flask 和 Django 也可以通过一些库实现自动生成 API 文档,但这些功能通常需要额外的配置和工作,而且通常没有 FastAPI 自带的交互式体验那么好。

  3. 异步支持:
    FastAPI 支持异步请求处理,这意味着可以利用 Python 的异步特性来处理高并发的请求。这在处理 I/O 密集型任务时特别有用,例如与数据库或外部 API 的交互。相比之下,Flask 和 Django 在处理请求时通常是同步的,虽然它们也有一些异步扩展库,但在设计上没有像 FastAPI 那样原生支持异步。

  4. 适用范围:
    Flask 是一个轻量级的框架,非常适合快速开发小型应用或原型。它的简单性和灵活性使得它成为了很多开发者的首选。
    Django 则是一个功能丰富的框架,提供了许多内置功能,例如用户认证、管理后台、ORM 等,非常适合构建大型的 Web 应用程序。

FastAPI 在设计上借鉴了 Flask 的简单性和 Django 的功能性,并且加入了异步支持,因此可以说它适用于中小型到大型的 Web 应用程序,尤其适合构建需要高性能的 API。

二、获取FastAPI

前提我们已经安装好Conda,使用以下命令创建环境

conda create --name app python==3.10.12 #创建环境
conda activate app #激活环境
python.exe -m pip install pip --upgrade #更新pip命令
pip install fastapi #安装fastapi
pip install "uvicorn[standard]" #安装uvicorn

二、运行FastAPI

新建一个main.py文件

from typing import Union

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def read_root():
   return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
   return {"item_id": item_id, "q": q}

运行一下命令

uvicorn main:app --reload

在浏览器打开链接(http://127.0.0.1:8000/items/5?q=somequery)进行访问,得到响应如下:

{"item_id": 5, "q": "somequery"}

解释如下:

通过 路径 / 和 /items/{item_id} 接受 HTTP 请求。
以上 路径 都接受 GET 操作(也被称为 HTTP 方法)。
/items/{item_id} 路径 有一个 路径参数 item_id 并且应该为 int 类型。
/items/{item_id} 路径 有一个可选的 str 类型的 查询参数 q。

三、自带Swagger文档

现在访问 http://127.0.0.1:8000/docs,自动生成的交互式 API 文档(由 Swagger UI生成):请添加图片描述

使用自带的Swagger文档对接口进行请求如下所示:

  1. 访问 http://127.0.0.1:8000/docs。Swagger文档将会自动更新,并加入新的请求体。
    请添加图片描述
  2. 点击「Try it out」按钮,之后你可以填写参数并直接调用 API:
    请添加图片描述
  3. 点击「Execute」按钮,用户界面将会和 API 进行通信,发送参数,获取结果并在屏幕上展示:
    请添加图片描述

总结

你就像声明函数的参数类型一样只声明了一次请求参数、请求体等的类型。你使用了标准的现代 Python 类型来完成声明。你不需要去学习新的语法、了解特定库的方法或类,等等。只需要使用标准的 Python 及更高版本。总的来说,FastAPI 是一个功能强大、性能优异、易于使用的 Web 框架,适合构建现代化的高性能 API。

  • 23
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值