1. 什么是FastAPI

FastAPI是一个现代的,快速(高性能)python web框架。基于标准的python类型提示,使用python3.6+构建API的Web框架。

2. FastAPI有哪些特点

  • 快速:非常高的性能,能够与NodeJSGo媲美(感谢Starlette和Pydantic)。可用的最快的 Python 框架之一   - Starlette 是一个轻量级 ASGI 框架/工具包。它非常适合用来构建高性能的 asyncio 服务,并支持 HTTP 和 WebSockets。官方网址:https://www.starlette.io/
      - Pydantic 是一个使用Python类型提示来进行数据验证和设置管理的库。Pydantic定义数据应该如何使用纯Python规范用并进行验证。官方网址:https://pydantic-docs.helpmanual.io/
  • 快速开发:将开发功能的速度提高约 200% 到 300%。
      - 代码补全,只能提示(编辑器支持)
      - 类型检查
  • 更少的错误:减少大约40% 的人为(开发人员)引起的错误
      - 类型转换
      - 失败类型自动生成清晰的错误信息
      - 对多层嵌套的 JSON 对象依然执行校验
      - 输入数据转换,将来自于请求的输入数据转换为Python数据类型
        - JSON
        - 路径参数
        - 查询参数
        - Cookies
        - 请求头
        - 表单
        - 文件
      - 将python代码返回的类I型那个转换成接口的json类型
        - 转换 Python 基础类型 (strintfloatboollist 等)
        - datetime 对象
        - UUID 对象
        - 数据库模型
        - …以及更多其他类型
  • 直观:强大的编辑器支持。处处完成。调试时间少。
  • 简单:旨在易于使用和学习。减少阅读文档的时间。
  • 简短:最小化代码重复。每个参数声明的多个功能。更少的错误。
  • 健壮:获取可用于生产环境的代码。具有自动交互式文档。
      - Swagger UI
      - ReDoc
  • 基于标准:基于(并完全兼容)API 的开放标准:OpenAPI(以前称为 Swagger)和JSON Schema

3. 快速开始

要求

  • Python 3.6+
  • FastAPI站在巨人的肩膀上
      - Starlette:Web 部分
      - Pydantic:数据校验部分

安装

pip install fastapi  # 安装fastapi
pip install uvicorn  # ASGI服务器,也可以使用Hypercorn,建议使用Uvicorn

例子

# main.py
# coding:utf8

from typing import Optional  # 导入可选类
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: Optional[str] = None):
    return {"item_id": item_id, "q": q}

if __name__=='__main__':
    import uvicorn
    uvicorn.run('main:app', host='127.0.0.1', port=8008, reload=True)

运行

python3 main.py
INFO: Uvicorn running on http://127.0.0.1:8008 (Press CTRL+C to quit)
INFO: Started reloader process [28720]
INFO: Started server process [28722]
INFO: Waiting for application startup.
INFO: Application startup complete.

注:

  1. uvicorn运行的是主程序的fastAPI,字符串方式传入,即上述的’main:app’
  2. 指定主机和端口运行
  3. reload=True,当项目文件更新,程序自动重启(热更新),此选项默认为False

4. 交互式API文档

访问http://127.0.0.1:8008/docs 即可看到可交互式api文档(由Swagger UI提供)

可以看到接口的请求方式、地址、参数、正常响应内容和常见异常响应。