繁体   English   中英

Tornado RequestHandler:如何在获取参数之前解码 url 编码的查询

[英]Tornado RequestHandler: How to decode url encoded query before getting the arguments

我正在使用 python Tornado 框架来构建一个 API 和 RequestHandler 来处理我通过 get() 方法获得的查询。

我的处理程序

handlers = [
    (r"?", MainHandler)
]
class MainHandler(RequestHandler):
    
    def get(self):
        args = {
            "text": RequestHandler.get_argument(self, "text", default=""),
            "lang": RequestHandler.get_argument(self, "lang", default=""),
        }
        # Process the query
        ......

问题是当查询是像“text%3DHi%26lang%3Den”这样的 URL 编码时,RequestHandler 不会对查询进行解码并识别它的两个参数。 相反,它将“text”参数值标识为“Hi&lang=en”。

那么,如果参数是 URL 编码的,我该如何读取它们呢? 显然 RequestHandler.get_arguments() 在解析 URL 参数之前似乎没有解码它们

因为&字符也被编码,根据 HTTP 规范,它被视为值的一部分,而不是分隔符。

事实上,整个字符串 - text%3DHi%26lang%3Den应该被视为单个值,因为分隔符( =& )也被编码。

基本上,当您发送请求时,您只需编码参数值,而不是整个查询字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM