URL请求格式可能是
http://SERVER/search/categories=Macrohistory&name=Cotton,Gasoline
然后我想将params存储为以下Hash结构。
{
"categories" => ["Macrohistory"],
"name" => ["Cotton","Gasoline"]
}
这是一个类似的请求。
http://SERVER/search/tag=Taiwan,China&name=Cotton,Gasoline
{
"tag" => ["Taiwan", "China"],
"name" => ["Cotton","Gasoline"]
}
是否有任何内置或推荐的软件包可以获得我的预期结果?
我可以手动编写解析器,
但我不想重建轮子,
如果有更好的解决方案,谢谢。
@app.route("/search/<string:parameters>")
@return_json
def search():
答案 0 :(得分:2)
在网址中,name=value
元素通常作为查询字符串的一部分输入,该字符串会在&#39;?&#39;之后添加到网址的末尾。这会将您的网址更改为
http://SERVER/search/?categories=Macrohistory&name=Cotton,Gasoline
通过此更改,以下代码几乎可以为您提供所需的输出:
>>> import urlparse
>>> s = "http://SERVER/search/?categories=Macrohistory&name=Cotton,Gasoline"
>>> urlparse.urlparse(s)
ParseResult(scheme='http', netloc='SERVER', path='/search/', params='', query='categories=Macrohistory&name=Cotton,Gasoline', fragment='')
>>> urlparse.parse_qs(urlparse.urlparse(s).query)
{'name': ['Cotton,Gasoline'], 'categories': ['Macrohistory']}
获得&#34; Cotton&#34;和&#34;汽油&#34;作为值&#34; name&#34;的两个单独的列表元素,它们需要在URL中单独输入:
>>> s = "http://SERVER/search/?categories=Macrohistory&name=Cotton&name=Gasoline"
>>> urlparse.parse_qs(urlparse.urlparse(s).query)
{'name': ['Cotton', 'Gasoline'], 'categories': ['Macrohistory']}