文章目录
- fastapi 介绍
- restful接口设计
- 简单应用
- Swagger风格的接口文档
fastapi 介绍
fastapi官方文档
- fastapi 是现代化、高性能、基于python标准类型注释的异步web框架;
- 基于python构建web APIs,性能可比go语言;
- 高效编码,更少的bug错误;
- 安装pip install fastapi uvicorn,部署基于ASGI;
restful接口设计
- 应用场景: 前后端分离
- 面向资源的设计,每个 uri 是一个资源,对资源的操作使用请求的方法表示
- GET, 获取资源;
- POST,创建资源;
- PUT,更新资源;
- DELETE,删除资源;
- HEAD 类似GET,只返回头部信息;
- OPTIONS,查看服务端支持的请求方法等,常用跨域的检查;
- 交互数据格式:json;
- uri 资源路径设计
- 尽量使用名词;
- 尽量体现版本号,如/v1/user
- 使用查询参数;
简单应用
# __author__ = "laufing"
from fastapi import FastAPI # 异步web框架
import uvicorn # ASGI
# 创建应用对象
app = FastAPI()
# GET 接口
@app.get("/")
def index():
return {
"code": 200,
"msg": "0k"
}
# get /user/info?page=5&pageSize=10
@app.get("/user/info")
def user_info(page: int = 1, pageSize: int = 10) -> dict: # 查询参数 直接传入
print("query parameters:", page, pageSize)
return {
"code": 200,
"msg": "page=%d and pageSize=%d" % (page, pageSize)
}
# 数据模型、序列化
from pydantic import BaseModel
class UserData(BaseModel):
name: str # 必须参数
password: str
phone: str
# post /user/register 请求体数据 {"name": "jack", "password": 123, "phone": 123}
@app.post("/user/register")
def register(user: UserData) -> UserData:
print(user, type(user)) # UserData类型的对象
return user # 将模型序列化为json
if __name__ == '__main__':
# 即绑定局域网ip
# 0.0.0.0 支持linux ,可以在py脚本中启动
# uvicorn.run(app, host="localhost", port=8083, log_level="info")
pass
启动方式:
- python脚本方式;
- uvicorn.run(app, host, port)
- 命令行方式
- uvicorn src.main:app --reload
可以在浏览器中测试接口;
Swagger风格的接口文档
在浏览器中输入:http://localhost:8000/docs
,可以在如下接口中进行测试。