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