龙卷风 - RequestHandler的get_argument(),get_query_argument()和get_body_argument()之间有什么区别?

时间:2016-01-15 20:04:48

标签: python http-headers tornado httpresponse http-request

何时使用 RequestHandler.get_argument() RequestHandler.get_query_argument() RequestHandler.get_body_argument()

每个人的 用例 是什么?

request.bodyrequest.argument在这些情况下做了什么?在哪些场景中使用哪些?

并且,是否有request.query或类似的东西?

1 个答案:

答案 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_argumentsrequest.query_arguments值(其中request.arguments为其聚合),解码为Unicode。 request.body是未解码的,未解析的原始请求正文;是的,有一个等效的self.query包含来自URL的查询字符串。