FastApi基础

简介

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

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

安装

1
2
3
pip install fastapi
# ASGI服务器
pip install uvcorn

示例

1
2
3
4
5
6
7
# main1.py
from fastapi import FastAPI
liyk = FastAPI()

@liyk.get("/")
def index():
return "哈哈123"

运行

1
2
3
4
uvicorn main1:liyk --reload --port=9000 --host=0.0.0.0
# main1::main1.py文件
# liyk:在main1.py文件中通过liyk = FastAPI()创建的对象
# --reload:让服务器在更新代码后重新启动,仅在开发时使用该选项。

交互式API文档

1
2
访问:http://127.0.0.1:8000/docs
就会有自动生成的交互式API文档

URL规则定义

  • url中定义参数
1
2
3
4
5
6
7
# fastapi中使用{参数名}的方式来表示参数
from fastapi import FastAPI
app = FastAPI()

@app.get("/book/{book_id}")
def book_detail(book_id):
return {"book_id": book_id}
  • 有类型的参数
1
2
3
4
5
6
7
8
9
# 在定义参数的时候还可以指定具体的类型
@app.get("/book/{book_id}")
def read_book(book_id: int):
return {"book_id": book_id}

# 作用
1.函数中参数根int,指明这个参数是什么类型
2.fastapi,约束参数类型
3.fastapi,会自动将book_id参数从字符串类型
  • 预设值
1
2
3
4
5
6
7
8
9
10
11
from fastapi import FastAPI
from enum import Enum # 设定预设值
app = FastAPI()

class GenderEnum(str, Enum):
male = "male"
female = "female"

@app.get("/gender/{gender_name}")
def gender(gender_name: GenderEnum):
return {"性别": gender_name}
-------------本文结束感谢您的阅读-------------
原创技术分享,感谢您的支持。