目的: Fastapi 是一个基于 python 的框架,该框架提供了许多好处,例如自动 OpenAPI 验证和文档编制, 即自动生成swagger说明。 以及其他的强大的功能, 在学习中探索并记录
一 、前提条件:准备开发环境
安装第三方库
pip install fastapi
安装依赖包
pip install fastapi[all]
安装服务器(运行环境)
pip install uvicorn[standard]
二、正式编写第一个接口,运行并得到响应结果
放访问 服务器地址时, http://127.0.0.1:8000/ 调用welcome 函数,返回响应
创建一个main.py文件
# 编写第一个接口
from fastapi import Path
from fastapi import FastAPI
from typing import Union
from fastapi import FastAPI
from fastapi import Query
import time
import requests
app = FastAPI()
# 接口请求:不带端口号, 默认8000, 且无路径参数及查询参数及body 部分
@app.get('/')
async def welcome():
return "hello,world"
启动后端服务命令: uvicorn main:app --reload
三、查看接口文档:
当访问:http://127.0.0.1:8000/docs 时, 自动生成接口文档
四、请求参数记录
1、查询参数赋予默认值, 并返回
# todo 1 : 路径参数 , 并返回默认值
# 当没有路径参数, 只有查询参数时,并且查询参数赋予了默认值,则不会报错, 为非必填
@app.get("/items/")
async def read_item(skip: int = 0, limit: int = 10):
return {
"skip": skip,
"limit": limit
}
curl --location 'http://127.0.0.1:8000/items/'
结果如下:
2、若查询参数不赋予默认值, 这时, fast api 强大的功能展现了~
仍是请求: curl --location 'http://127.0.0.1:8000/items/'
报错如下: 缺少必填的查询字段: skip,limit
@app.get("/items/")
# async def read_item(skip: int = 0, limit: int = 10):
async def read_item(skip, limit):
return {
"skip": skip,
"limit": limit
}
{
"detail": [
{
"type": "missing",
"loc": [
"query",
"skip"
],
"msg": "Field required",
"input": null,
"url": "https://errors.pydantic.dev/2.5/v/missing"
},
{
"type": "missing",
"loc": [
"query",
"limit"
],
"msg": "Field required",
"input": null,
"url": "https://errors.pydantic.dev/2.5/v/missing"
}
]
}