FastAPI学习笔记
FastAPI框架
一个现代,快速的框架,很支持异步
优点:快速,开发效率高,简单简短,标准化
http协议
沟通的双方是客户端(浏览器)和服务器,客户端通过URL地址基于协议访问服务器,服务器基于协议将相应内容返回给客户端,基于TCP/IP协议,请求-相应模式,无状态保存(服务器无记录),
API接口
前后端不分离和前后端分离
前后端分离模式下后端只是对外提供统一的API,根据前端发出的请求进行操作后返回某种格式(如JSON)的数据,而不进行对页面的处理
API接口是应用程序对外提供的一个入口,可以是一个函数/类方法,可以是一个URL地址/网络地址
resful规范
是一种API接口的设计风格,适用于前后端分离模式,面向资源开发,路径一样,基于不同请求进行增删改查等操作
请求方式:POST,GET,PUT,SELECT,DELETE
基本格式
from fastapi import FASTAPI
app = FASTAPI()
基本流程:导入FASTAPI,创建app实例,编写路径操作装饰器,编写路径函数,返回定义值,运行
在命令行模式下运行:uvicorn 文件名:app --reload
if __name__ == "__main__":
uvicorn.run("文件名:app",host=127.0.0.1,port=端口号,reload=True)
加入上述代码在最后可以直接运行
接口文档可以通过在浏览器网址127.0.0.1:端口号/docs查看
路径操作
路径操作装饰器方法
put,post,delete,patch,options,head,trace
路径操作装饰器参数
@app.put("/item",参数)
参数包括例如:
tags=[""]添加一个标题,是一个列表
summary=""添加一个概述总结
description=""添加一个详细描述
respondse_description=""添加一个响应
deprecated=True/False,分别表示此接口正常用和此接口废弃
include_router路由分发
from fastapi import APIRouter
shop = APIRouter()
from fastapi import APIRouter
user = APIRouter()
from 文件1 import shop
from 文件2 import user
app = FastAPI()
app.include_router(shop,prefix="/shop",参数等)
app.include_router(user,prefix="/user",参数等)
按照以上类似操作就可以分成两类接口,分模块开发
请求与相应
路径参数和查询参数之间是用?隔开
路径参数
这段代码中的id就是一个路径参数,在docs文档中会出现一个需要填id的输入来查询
注意:在路径中传送的任何参数都是字符型,想要响应得到其他类型可以在进行转换,但是转换后输入的值只能是对应的类型
路径匹配是有顺序的,在输入同一个值出现了两种对应的响应值时,按照顺序优先相应第一个
所以如果把小范围的路径放在大范围的路径的下面,上面的路径会覆盖下面的路径
查询参数
在路径函数中声明不属于路径函数的其他参数时,这些参数就会被自动解释为“查询字符串”参数,用&分隔开,key-value键值对
上述代码中的name就是 查询参数
查询参数和路径参数可以同时使用
如果想要某个查询参数可填可不填,可以把它设置为可选参数(name:none)
Union
想要某一个变量可以是某两个类型中的一个,使用union
from typing import Union
之后修改为某一种类型还可以name:Union[str,None] = None或者Optional[str] = None,效果一样
请求体数据
FastAPI基于Pyantic,Pyantic主要用来做类型强制检查(数据校验)
Postman发送数据之后会进行一个数据校验,查看类型是否符合
from pydantic import BaseModel
from datetime import date
class User(BaseModer):
name:str
age:int
birth:date
类型不一致不一定报错,可能会强制转换,4转换不了才会报错
类型还可以是List[int]等类型
class内可以设置限制,比如:
name:str = "hello"设置默认值
age:int = Field(default=0,gt=0,lt=100)限制在0到100之间
Union,Optional也同样适用
限制时也可以用正则表达式进行限制
Cookie参数
与查询参数和路径参数类似
from fastapi import Cookie, FastAPI
app = FastAPI()
之前使用的用来验证路径参数和查询参数的方法,Cookie参数也同样适用
Header参数
与查询参数和路径参数类似
from fastapi import FastAPI, Header
app = FastAPI()
之前使用的用来验证路径参数和查询参数的方法,Header参数也同样适用
在声明上述两种参数时要用对应的方法,否在就会被解释为查询参数
form表单数据
请求体数据有JSON和form表单两种格式
from fastapi import FastAPI, Form
app = FastAPI()
先要安装组件:pip install python-multipart
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)