【一】Fastapi引入
【1】构建基础的fastapi项目
from fastapi import FastAPI
from typing import Optional
from pydantic import BaseModel
# 创建 fastapi 对象
app = FastAPI()
# 定义模型表
class CityInfo(BaseModel):
# 省份
province: str
# 城市
country: str
# 是否被感染 , Optional[bool] 与 bool 的区别是 可以不传,默认为 null
is_affected: Optional[bool] = None
# 定义路由 ---- 访问根路径返回指定内容
@app.get('/')
def hellow_world():
return {'hello': "world"}
# city : 路径参数
# /city/{city}?name=dream : ?name=dream 查询参数
@app.get('/city/{city}')
def result(city: str, query_string: Optional[str] = None):
'''
:param city: 城市 -- 路径参数
:param query_string: 请求参数 -- str 类型 默认可以为 None
:return:
'''
return {'city': city, 'query_string': query_string}
【2】启动项目
- 基本启动命令
uvicorn 文件名:app名
# 启动项目命令 :uvicorn 01hello_world:app
- Debug启动
uvicorn 文件名:app名 --reload
# 带Debug模式启动命令 : uvicorn 01hello_world:app --reload
- 注意所在的文件路径
(venv) PS E:\fastapiProjects\projects\part3> uvicorn 01hello_world:app --reload
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [23976] using statreload
INFO: Started server process [18320]
INFO: Waiting for application startup.
INFO: Application startup complete.
【3】访问项目
http://127.0.0.1:8000
- 可以看到正是上面我们所写的返回值
http://127.0.0.1:8000/city/city
- 访问带参数的路径,我们可以看到其中的一个参数已经被接受到了
http://127.0.0.1:8000/city/city?query_string=dream
- 携带我们的路径参数,我们也可以看到参数传递成功
【4】访问路由返回数据
(1)定义路由及视图
from fastapi import FastAPI
from typing import Optional
from pydantic import BaseModel
# 创建 fastapi 对象
app = FastAPI()
# 定义模型表
class CityInfo(BaseModel):
# 省份
province: str
# 城市
country: str
# 是否被感染 , Optional[bool] 与 bool 的区别是 可以不传,默认为 null
is_affected: Optional[bool] = None
# 定义返回数据
@app.put('/city/{city}')
def result(city: str, city_info: CityInfo):
'''
:param city: 城市 -- 路径参数
:param city_info: 携带的数据 必须符合上面定义的模型类
:return:
'''
return {'city': city, 'province': city_info.province, 'country': city_info.country,
'is_affected': city_info.is_affected}
(2)携带参数
- 可以使用postman/apifox
-
也可以使用fastapi自带的 Swagger 接口工具
http://127.0.0.1:8000/docs
- 携带参数,发起请求
- 获取响应信息
【5】同步请求变异步请求
from fastapi import FastAPI
from typing import Optional
from pydantic import BaseModel
# 创建 fastapi 对象
app = FastAPI()
# 定义模型表
class CityInfo(BaseModel):
# 省份
province: str
# 城市
country: str
# 是否被感染 , Optional[bool] 与 bool 的区别是 可以不传,默认为 null
is_affected: Optional[bool] = None
# 定义路由 ---- 访问根路径返回指定内容
@app.get('/')
async def hellow_world():
return {'hello': "world"}
# city : 路径参数
# /city/{city}?name=dream : ?name=dream 查询参数
@app.get('/city/{city}')
async def result(city: str, query_string: Optional[str] = None):
'''
:param city: 城市 -- 路径参数
:param query_string: 请求参数 -- str 类型 默认可以为 None
:return:
'''
return {'city': city, 'query_string': query_string}
# 定义返回数据
@app.put('/city/{city}')
async def result(city: str, city_info: CityInfo):
'''
:param city: 城市 -- 路径参数
:param city_info: 携带的数据 必须符合上面定义的模型类
:return:
'''
return {'city': city, 'province': city_info.province, 'country': city_info.country,
'is_affected': city_info.is_affected}
【二】Fastapi的API交互文档docs
【1】接口地址
http://127.0.0.1:8000/docs
【2】总览
【3】标头
【4】无参请求
- Curl 表示在Linux系统上如何发送请求
- Response 可以自定义响应详细信息
- Example Value 可以自己写一个请求的示例,这样前端可以直接使用我们的示例进行测试
【5】有参请求
【6】有参PUT请求见上面
【三】Fastapi的API交互文档redoc
【1】接口地址
http://127.0.0.1:8000/redoc
【2】页面展示
【3】说明
- redoc只能查看我们接口相关的信息,但是无法进行交互时发送请求