gpt4 book ai didi

Python Eve - 包含列表的 POST 负载

转载 作者:行者123 更新时间:2023-11-28 18:36:02 25 4
gpt4 key购买 nike

我在使用模式中的 list 类型时遇到问题。每当我尝试 POST 时,都会收到 422 响应,指出“必须是列表类型”。下面是一个产生此问题的简单示例。

from eve import Eve

people = {
'schema': {
'tests': {
'type': 'list',
'schema': {
'type': 'string'
},
'required': True,
}
},
'resource_methods': ['GET', 'POST'],
}

settings = {
'DOMAIN': {
'people': people
}
}
app = Eve(settings=settings)

if __name__ == '__main__':
app.run()

然后当您使用以下 POST 到人员端点时:

import requests

url = "http://localhost:5000/people"

person = {
"tests": ['a', 'b'],
}

r = requests.post(url, data=person)
print(r.json())

您收到 422 响应。当我对此进行调试时,看起来 Eve 应用程序收到的 tests 参数只是一个字符串 'a',而不是整个列表。从我在 GitHub 上的 Eve 测试中看到的情况来看,这似乎是发出请求的正确方式,所以我只能假设我在设置资源/架构时犯了错误?

谢谢。

最佳答案

如果你打印request.POST,你会看到UnicodeMultiDict([('tests', u'a'), ('tests', u'b')])。解决此问题的方法是为您的 post 使用 json object

person = json.dumps({
"tests": ['a', 'b'],
})

r = requests.post(url, json=person)
print(r.json())

或者在您的情况下,您将不得不以某种方式在 API 端调整您的 POST 请求以获得列表:-request.POST.getall('tests') 然后继续。

请查看using json in POST request .此外,在使用 json 时,可能不需要 json.dumps,字典将自动 jsonified

关于Python Eve - 包含列表的 POST 负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32456430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com