fastapi 处理请求参数整理
2023-12-22 10:29:05
1、路径参数
@app.get("/getfilecontent/{id}/{pre}")
def get_filecontent(id,pre):
"""
路径参数,测试接口,读取当前工作目录下的file.txt文件,返回txt中的内容
:param id: The ID of the item to retrieve.
:param pre: An optional query parameter.
"""
with open('file.txt', 'r') as f:
content = f.read()
logger.info("start2")
return {"Hello": content}
限制允许的值
例1:
class UserType(str,Enum):
STANDARD="standard"
ADMIN="admin"
例2:
async def get_user(type:UserType,id:int)
ge 大于或等于
2、查询参数
@app.get("/users")
def get_users(page:int=1,size:int=10):
"""
查询参数,测试接口
:param page: The ID of the item to retrieve.
:param size: An optional query parameter.
"""
return {"Hello": size}
3、主体数据
例1:
from fastapi import Body
@app.post("/userstest")
async def create_usertest(name:str=Body(...),age:int=Body(...)):
return{"name":name,"age":age}
用postman测试,如下:
例2:
class Item(BaseModel):
name: str
description: Optional[str] = None
price: float
tax: Optional[float] = None
@app.post("/itemes/")
async def create_iteem(item: Item):
"""主体数据 测试 原始的(raw) body中负载json 但是使用了pydantic,避免了上述冗长"""
return item
4、表单数据和文件上传
(1)表单数据
from fastapi import Form
@app.post("/login/")
async def login(username: str = Form(...), password: str = Form(...)):
"""表单数据 测试"""
return {"username": username}
(2)文件上传
pip install python-multipart。
from fastapi import FastAPI, File,UploadFile,Response
@app.post("/uploadfile/")
async def create_upload_file(file: UploadFile = File(...)):
logger.info("start")
try:
with open(file.filename, "wb") as local_file:
local_file.write(file.file.read())
return JSONResponse(content={"message": "File uploaded and saved successfully 上传成功,定位成功"})
except Exception as e:
logger.info(str(e))
return JSONResponse(content={"message": f"An error occurred: {str(e)}"}, status_code=500)
return {"filename": file.filename}
文章来源:https://blog.csdn.net/weixin_41487423/article/details/135146416
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!