Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在没有rails的Ruby中将POST参数转换为哈希_Ruby_Http - Fatal编程技术网

在没有rails的Ruby中将POST参数转换为哈希

在没有rails的Ruby中将POST参数转换为哈希,ruby,http,Ruby,Http,将从浏览器接收的HTTP POST字符串转换为Ruby哈希的最佳库是什么?我不想使用基于rails的大型库。我正在使用eventmachine和evma_httpserver,并希望包含可能解码和转换参数字符串的最轻库 注意:我不需要Web服务器。我手头有经过编码的post字符串,只需要将其转换为哈希。您可以使用gem作为其方法 如果您希望比这更轻,您可以将源代码复制到,并从中复制方法 如果您希望事件更轻(但可能没有那么高的性能或健壮),只需实现您自己的剥离并依靠CGI.unescapeURI。

将从浏览器接收的HTTP POST字符串转换为Ruby哈希的最佳库是什么?我不想使用基于rails的大型库。我正在使用
eventmachine
evma_httpserver
,并希望包含可能解码和转换参数字符串的最轻库

注意:我不需要Web服务器。我手头有经过编码的post字符串,只需要将其转换为哈希。

您可以使用gem作为其方法

如果您希望比这更轻,您可以将源代码复制到,并从中复制方法


如果您希望事件更轻(但可能没有那么高的性能或健壮),只需实现您自己的剥离并依靠
CGI.unescape

URI。Ruby标准库中的decode\u www\u form
可以做到这一点:

尝试以下方法:

需要“uri”
result=URI.decode_www_form(“your=post¶ms=values”).injection({}){r,(key,value){r[key.to_sym]=value;r}
放入结果[:你的]
放置结果[:params]

机架?写了这篇文章之后,我实际上在URI.decode\u www\u form中发现了一个bug:使用正确的查询字符串,您可以触发一个表面上无限的循环:
URI.decode\u www\u form('a=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa。这里似乎有一个写得很糟糕的regexp,它会以指数级的次数回溯(在示例中尝试减少a的数量,最终你会得到一个答案)。看起来^^^不再是一个问题了?