gpt4 book ai didi

python - 如何使用 Twisted (python) 正确解析请求字符串

转载 作者:行者123 更新时间:2023-11-28 22:03:45 26 4
gpt4 key购买 nike

我正在尝试实现一个简单的扭曲 HTTP 服务器,它会响应从数据库加载图 block 的请求并返回它们。但是我发现它解释请求字符串的方式很奇怪。

这是我向服务器发送的内容:

curl -d "request=loadTiles&grid[0][x]=17&grid[0][y]=185&grid[1][x]=18&grid[1][y]=184" http://localhost:8080/fetch/

我希望 request.args 是:

{'request': 'loadTiles', 'grid': [{'x': 17, 'y': 185}, {'x': 18, 'y': 184}]}

Twisted 如何解释 request.args:

{'grid[1][y]': ['184'], 'grid[0][y]': ['185'], 'grid[1][x]': ['18'], 'request': ['loadTiles'], 'grid[0][x]': ['17']}

是否可以让它自动解析请求字符串并为网格参数创建一个列表,还是我必须手动执行?

我可以对网格参数进行 json 编码,然后在服务器端对其进行解码,但这似乎是一个不必要的 hack。

最佳答案

我不知道为什么您会期望您的 urlencoded 数据根据一些临时的非标准规则进行解码,或者为什么您会认为标准处理“奇怪”; [ 在查询字符串中并不特殊。什么软件以这种方式解码它们?

无论如何,这并不是真正的 Twisted,而是 Python(更一般地说,是解析此数据的 web-standard 方式)。您可以通过 cgi.parse_qs 查看返回的数据类型交互作用。例如:

>>> import cgi
>>> cgi.parse_qs("")
{}
>>> cgi.parse_qs("x=1")
{'x': ['1']}
>>> cgi.parse_qs("x[something]=1")
{'x[something]': ['1']}
>>> cgi.parse_qs("x=1&y=2")
{'y': ['2'], 'x': ['1']}
>>> cgi.parse_qs("x=1&y=2&x=3")
{'y': ['2'], 'x': ['1', '3']}

我希望这能帮您解决问题。

关于python - 如何使用 Twisted (python) 正确解析请求字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8438179/

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