python - Python:FastApi(无法处理的实体)错误
问题描述
当我使用GET请求将数据发送到服务器时,它工作正常,但是当使用POST请求时,它显示名为“无法处理的实体”的错误
这是我的 Ajax 请求代码
var newName = "Bhanuka";
//do your own request an handle the results
$.ajax({
type: "post",
url: "/names/",
data: {d:newName},
dataType: 'json',
success: function(data){
console.log(data);
}
});
这是我的 fastAPI 服务器端代码
from fastapi import FastAPI, Request,Body
from pydantic import BaseModel
from fastapi.templating import Jinja2Templates
from fastapi.encoders import jsonable_encoder
app = FastAPI()
templates = Jinja2Templates(directory="templates")
@app.get("/items/{id}")
async def read_item(request: Request, id: str):
return templates.TemplateResponse("item.html", {"request": request, "id": id})
@app.post("/names/")
async def create_item(d:str):
return d
@app.get("/items11/{item_id}")
def read_item22(item_id: int, q: str ):
return {"item_id": item_id, "q": q}
解决方案
这是因为您发送的数据是 json。并且 POST 请求 api 期待 str。
如果在 api 调用期间格式不匹配,则会引发 Unprocessable Entity 错误。
你可以使用它来处理它
- 要求
- 书呆子的
好吧,来到第一种情况,1.Request:你可以使用curl的request
curl -i -d "param1=value1¶m2=value2" http://localhost:8000/check
以下面的代码为例:
from fastapi import FastAPI, Request
from fastapi.encoders import jsonable_encoder
app = FastAPI()
@app.post('/check')
async def check(request: Request):
da = await request.form()
da = jsonable_encoder(da)
print(da)
return da
- @kamal 的回答中提到的 Pydantics
推荐阅读
- c++ - C++ struct 模板变量快捷方式定义不起作用
- python - 如何在多类分类设置中从 Logitboost 算法中提取特征重要性?
- c - 如何使用 C libbson 从 mongo db 更改流中提取字段
- excel - 为什么 INDIRECT excel 方法不能按预期工作
- php - 如何显示数据库中选定用户的信息以进行编辑
- c# - 在 Swagger 中隐藏参数的最佳方法
- awk - 将 awk 的最后一个值保存为变量
- python - Python - 删除列表中前两次出现的元素
- javascript - 扫描文本并将任何绿色转换为白色然后再转换回来
- python - 熊猫错误 - 没有索引在列中