何时使用 RequestHandler.get_argument()
, RequestHandler.get_query_argument()
和 RequestHandler.get_body_argument()
?
每个人的 用例 是什么?
request.body
和request.argument
在这些情况下做了什么?在哪些场景中使用哪些?
并且,是否有request.query
或类似的东西?
答案 0 :(得分:16)
大多数HTTP请求在以下两个位置之一存储额外的参数(例如,表单值):URL(以?foo=bar&spam=eggs
query string的形式),或在请求正文中(使用POST request and either the application/x-www-form-urlencoded
or multipart/form-data
mime type时) )。
Request.get_query_argument()
查找网址参数,RequestHandler.get_body_argument()
可让您检索POST正文中设置的参数。 RequestHandler.get_argument()
方法检索正文或URL参数(按此顺序)。
当您明确不关心参数来自何处并且您的端点同时支持GET和POST参数时,可以使用Request.get_argument()
。否则,请使用其他方法之一,以明确指出参数的来源。
Request.get_*_argument
方法使用request.body_arguments
和request.query_arguments
值(其中request.arguments
为其聚合),解码为Unicode。 request.body
是未解码的,未解析的原始请求正文;是的,有一个等效的self.query
包含来自URL的查询字符串。