| 知乎专栏 |
pip install python-multipart
from fastapi import FastAPI, Form
# from starlette.requests import Request
from starlette.responses import Response
from starlette.testclient import TestClient
app = FastAPI()
@app.post("/form")
async def login(username: str = Form(), password: str = Form()):
return {"username": username, "password": password}
client = TestClient(app)
data = {"username": "netkiller", "password": "123456"}
response = client.post("/form", data=data)
print(response.content.decode())
Bool 布尔值
@app.post("/test", summary="测试接口", description="测试接口", tags=["web"],
)
async def test(short: bool = Form(), status: Optional[bool] = Form(False)):
print(short, status)
return HTMLResponse(content="OK", status_code=200)
from fastapi import FastAPI, Request
from typing import Dict
# from starlette.requests import Request
from starlette.responses import Response
from starlette.testclient import TestClient
app = FastAPI()
@app.post("/json")
async def json(item: dict):
print(item)
return "OK"
client = TestClient(app)
data = {"key": "value"}
response = client.post("/json", json=data)
print(response.content.decode())
from fastapi import FastAPI, Request
# from starlette.requests import Request
from starlette.responses import Response
from starlette.testclient import TestClient
app = FastAPI()
@app.post("/webhook")
async def the_webhook(request: Request):
return await request.body()
data = b"""EURUSD Less Than 1.09092
{"Condition": "value"}
[3,4,5,]
{}"""
data = b"""EURUSD Less Than 1.09092"""
client = TestClient(app)
response = client.post("/webhook", data=data)
print(response.content.decode())
@app.post("/android/notification", summary="通知", description=f"通知接口", tags=["android"])
async def notification(request: Request):
jsonText = (await request.body()).decode()
print(jsonText)
print(await request.json())
return {"status": true, "data": {}, "msg": "成功"}
@app.post("/file/")
async def create_file(file: bytes = File()):
filename = f"tmp/{uuid.uuid4()}.png"
print(filename)
# filename = uuid.uuid4()
with open(filename, "wb") as f:
f.write(file)
return {"file": filename,"size": len(file)}
@app.post("/uploadfile")
async def create_upload_file(file: UploadFile):
# uuid5 = uuid.uuid5(uuid.NAMESPACE_DNS, 'netkiller.cn')
# filename, extension = os.path.splitext(file.filename)
filename = f"tmp/{file.filename}"
file_content = await file.read() # 读取文件
with open(filename, "wb") as f:
f.write(file_content)
return {"filename": file.filename,"content_type": file.content_type}
上传多个文件
from typing import List
from fastapi import FastAPI, File, UploadFile
app = FastAPI()
@app.post("/uploadfiles/")
async def create_upload_files(files: List[UploadFile] = File(...)):
return {"filenames": [file.filename for file in files]}