FastApi - 从PHP数组接收载荷

0 投票
1 回答
27 浏览
提问于 2025-04-12 14:31

我在一个FastAPI应用程序中遇到了下面的错误。这个错误和从PHP数组传来的数据有关。我可以把输入数据改成其他类型,但我面临的挑战是,这个输入看起来像一个普通的字典,所以我不知道怎么把这个数组当作字典来读取。

async def post(input_data:dict):

{#908
  +"detail": array:1 [
    0 => {#890
  +"type": "dict_type"
  +"loc": array:1 [
    0 => "body"
  ]
  +"msg": "Input should be a valid dictionary"
  +"input": "{"test":"No","fields":"X"}"
  +"url": "https://errors.pydantic.dev/2.2/v/dict_type"
    }
  ]
}

我希望能读取这个数组里面包含的字典。

1 个回答

0

输入的数据是一个字符串,内容是 "{"test":"No","fields":"X"}"

你可以使用 Pydantic 来把它转换成一个字典。

import json
from pydantic import BaseModel, field_validator


class InputData(BaseModel):
     input_data: dict

    @field_validator("input_data", mode='before')
    def sanitize_dict(cls, v):
        return json.loads(v)

然后在你的API路由中

async def post(input_data:InputData):
   ```Your endpoint implementation here...```

撰写回答