FastAPI系列(1):FastAPI简介

FastAPI是一个基于Python3.6+的高性能Web框架,结合了Starlette和Pydantic的优点。它提供了自动的数据验证、类型转换、编辑器支持等功能,使开发速度提升且错误率降低。通过简单的安装和示例代码,可以快速开始API开发。运行示例后,可以通过SwaggerUI查看交互式API文档,了解接口详情。
Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

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提供)

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

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值