FastAPI快速上手

500 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情

介绍

  • FastAPI是一个用于构建API的现代、快速(高性能)的 web 框架;
  • 使用 Python 3.6+ 并基于标准的 Python 类型提示;
  • 支持asyncio异步操作,性能高;
  • 易于学习,高效编码,bug少,且生产可用。

关键特性:

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

安装

  • 安装FastAPI
 pip3 install fastapi
  • 安装uvicorn(安装一个ASGI服务器,用来拉起FastAPI写的应用)
 pip3 install uvicorn

快速上手

  • 创建一个 main.py 文件并写入以下内容:
 from fastapi import FastAPI
 ​
 app = FastAPI()
 ​
 ​
 @app.get("/")
 def read_root():
     return {"Hello": "World"}
 ​
 # 创建了一个web服务,运行项目后访问浏览器的根路径,
 # FastAPI会执行read_root函数, 该函数的返回值会作为响应内容返回给浏览器。
  • 通过以下命令运行服务器:
 uvicorn main:app --reload

补充解释:

uvicorn main:app 命令含义如下:

  • mainmain.py 文件(一个 Python文件或模块)。
  • app:在 main.py 文件中创建的app对象。
  • --reload:让服务器在更新代码后重新启动。一般在开发时使用。

你将会看到如下JSON响应:

 {"Hello": "World"}

补充

  • asyncio异步编码:FastAPI是异步web框架上面的应用改写成异步代码如下。
  • FastAPI可以识别你定义的普通函数要同步执行,使用async def定义的协程函数异步执行。
 from fastapi import FastAPI
 ​
 app = FastAPI()
 ​
 ​
 @app.get("/")
 async def read_root():
     return {"Hello": "World"}