FastAPI如何处理非JSON格式的POST请求?
时间: 2024-11-12 18:33:28 浏览: 4
fastAPI请求实例
在FastAPI中,POST请求默认期待的是JSON格式的数据。如果接收到的不是JSON内容,FastAPI会抛出`Body`解码错误(`FastAPI.BodyException`)。为了处理这种情况,你可以配置FastAPI在接收到非JSON数据时返回适当的响应,如400 Bad Request状态码,并提供友好的错误消息。
以下是一个简单的示例,展示了如何捕获和处理非JSON POST请求:
```python
from fastapi import FastAPI, HTTPException
import ujson
app = FastAPI()
@app.exception_handler(HTTPException)
async def http_exception_handler(request, exc):
content = {"detail": str(exc.detail)}
return {"status": exc.status_code, "content": content}, exc.status_code
@app.post("/iata_download/")
async def iata_download(request: Request):
try:
data = await request.json()
# ...处理JSON数据...
except ujson.JSONDecodeError:
raise HTTPException(status_code=400, detail="Invalid request body. Expected JSON.")
# 如果一切正常...
# ...
```
在这个设置下,如果FastAPI遇到非JSON数据,它将调用`http_exception_handler`处理程序,并返回一个标准的错误响应给客户端。
阅读全文