FastAPI有各种各样的参数,包括:
- url参数(定义在url中的参数)
- param参数(使用url后面?xx=xx)定义的参数
- body参数(在请求主体中携带的json参数)
- form参数(在请求主体中携带的web表单参数)
- cookie参数(在请求的cookie中携带的参数)
- file参数(客户端上传的文件)
1. url参数
from fastapi import FastAPI
app=FastAPI()
app.get("/echo/{text}") #注意这里text将是函数定义的参数名.
async def getEchoApi(text:str): #通过定义参数类型可以让fastapi进行默认的参数检查.
return {"echo":text}
2. param参数
from fastapi import FastAPI
app=FastAPI()
app.get("/echo2/") #注意这里url上没有定义参数
async def getEchoApi(text:str): #fastapi会聪明的发现它不是URL参数,然后自动将他识别为param参数.
return {"echo":text}
localhost:8000/echo2?text=HelloWorld
3. body参数
from fastapi import FastAPI
from pydantic import BaseModel #fastapi的一个依赖,需要从pydantic中引入
app=FastAPI()
class EchoArgs(BaseModel): #继承BaseModel
text:str #定义一个字符串型参数
app.post("/echo/") #get同样支持请求体
async def postEchoApi(args:EchoArgs): #设置刚才定义的参数
return {"echo":item.text} #原样返回
4. form参数
from fastapi import FastAPI,Form #引入Form用于定义表单参数
app=FastAPI()
app.post("/echo/")
async def postEchoApi(text:str=Form(None)): #通过Form设置参数
return {"echo":text} #原样返回
5. cookie参数
from fastapi import FastAPI,Cookie
app=FastAPI()
app.post("/echo/")
async def postEchoApi(text:str=Cookie(None)):
return {"echo":text} #原样返回
6. file参数
from fastapi import FastAPI,File,UploadFile #引入文件相关操作
app=FastAPI()
app.post("/upload/2")
async def postUploadFile1Api(file:bytes=File(None)):
... #文件相关操作
app.post("/upload/1")
async def postUploadFile2Api(file:UploadFile=File(None)):
file_path = os.path.join(settings.file_server_base_directory, admin_report_link)
with open(file_path, "wb") as f:
while contents := file.file.read(1024 * 1024):
f.write(contents)
... #文件相关操作