首页 > 其他分享 >tornado 使用

tornado 使用

时间:2024-01-16 21:56:45浏览次数:30  
标签:body name get tornado args 使用 default arg

 

3.2 获取前端输入

下面几节主要讲解tornado.web.RequestHandler。

回想一下,利用HTTP协议向服务器传参有几种途径?

  • 查询字符串(query string),形如key1=value1&key2=value2;
  • 请求体(body)中发送的数据,比如表单数据、json、xml;
  • 提取uri的特定部分,如/blogs/2016/09/0001,可以在服务器端的路由中用正则表达式截取;
  • 在http报文的头(header)中增加自定义字段,如X-XSRFToken=itcast。

我们现在来看下tornado中为我们提供了哪些方法来获取请求的信息。

1. 获取查询字符串参数

从请求的查询字符串中返回指定参数name的值,如果出现多个同名参数,则返回最后一个的值。

default为设值未传name参数时返回的默认值,如若default也未设置,则会抛出tornado.web.MissingArgumentError异常。

strip表示是否过滤掉左右两边的空白字符,默认为过滤。

get_query_arguments(name, strip=True)

从请求的查询字符串中返回指定参数name的值,注意返回的是list列表(即使对应name参数只有一个值)。若未找到name参数,则返回空列表[]。

strip同前,不再赘述。

2. 获取请求体参数

get_body_argument(name, default=_ARG_DEFAULT, strip=True)

从请求体中返回指定参数name的值,如果出现多个同名参数,则返回最后一个的值。

default与strip同前,不再赘述。

get_body_arguments(name, strip=True)

从请求体中返回指定参数name的值,注意返回的是list列表(即使对应name参数只有一个值)。若未找到name参数,则返回空列表[]。

strip同前,不再赘述。

说明

对于请求体中的数据要求为字符串,且格式为表单编码格式(与url中的请求字符串格式相同),即key1=value1&key2=value2,HTTP报文头Header中的"Content-Type"为application/x-www-form-urlencoded 或 multipart/form-data。对于请求体数据为json或xml的,无法通过这两个方法获取。

3. 前两类方法的整合

get_argument(name, default=_ARG_DEFAULT, strip=True)

从请求体和查询字符串中返回指定参数name的值,如果出现多个同名参数,则返回最后一个的值。

default与strip同前,不再赘述。

get_arguments(name, strip=True)

从请求体和查询字符串中返回指定参数name的值,注意返回的是list列表(即使对应name参数只有一个值)。若未找到name参数,则返回空列表[]。

strip同前,不再赘述。

说明

对于请求体中数据的要求同前。 这两个方法最常用。

用代码来看上述六中方法的使用:

from tornado import web, ioloop, httpserver, options
from tornado.options import options, define

define("port", default=8080, type=int)


class IndexHandler(web.RequestHandler):
    def post(self):
        query_arg = self.get_query_argument("a")
        query_args = self.get_query_arguments("a")
        body_arg = self.get_body_argument("a")
        body_args = self.get_body_arguments("a", strip=False)
        arg = self.get_argument("a")
        args = self.get_arguments("a")

        default_arg = self.get_argument("b", "itcast")
        default_args = self.get_arguments("b")

        try:
            missing_arg = self.get_argument("c")
        except Exception as e:
            missing_arg = str(e)

        missing_args = self.get_arguments("c")
        print(f'query_arg:{query_arg}\n'
              f'query_args:{query_args}\n'
              f'body_arg:{body_arg}\n'
              f'body_args:{body_args}\n'
              f'arg:{arg}\n'
              f'args:{args}\n'
              f'default_arg:{default_arg}\n'
              f'default_args:{default_args}\n'
              f'missing_arg:{missing_arg}\n'
              f'missing_args:{missing_args}')
        self.write('it is test get_input')


if __name__ == '__main__':
    options.parse_command_line()
    app = web.Application(
        [(r"/", IndexHandler)],
    )
    http_server = httpserver.HTTPServer(app)
    http_server.listen(options.port)
    ioloop.IOLoop.current().start()

    """
    PostMan访问结果:
    query_arg:22
    query_args:['11', '22']
    body_arg:4
    body_args:[' 3', '4']
    arg:4
    args:['11', '22', '3', '4']
    default_arg:itcast
    default_args:[]
    missing_arg:HTTP 400: Bad Request (Missing argument c)
    missing_args:[]
    """

 

标签:body,name,get,tornado,args,使用,default,arg
From: https://www.cnblogs.com/tslam/p/17968633

相关文章

  • 使用函数的关键点
    shell函数实际开发1.shell函数定义的语法1.1标准shell函数定义格式function函数名(){函数体需要执行的Linux命令......return返回值}1.2 偷懒写法:当使用function关键字......
  • 使用pytorch加载llama
    使用PyTorch加载LLAMA数据集在深度学习中,数据集的选择和处理对于模型的性能和训练效果起着至关重要的作用。PyTorch是一个常用的深度学习框架,它提供了各种工具和函数来加载和处理各种常见的数据集。在本文中,我们将介绍如何使用PyTorch加载LLAMA数据集,并提供相应的代码示......
  • Win11上安装repo以能够使用`repo sync`同步Android代码
    首先安装一个git然后获取安卓源码,参考https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/下载地址为https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar解压tar文档,由于安卓代码逐渐使用python3脚本替代python2,而git-repo稳定版已不支持使用于Android源码......
  • java使用whisper命令生成字幕文件
    Java使用Whisper命令生成字幕文件引言在日常生活中,我们经常会遇到需要生成字幕文件的情况,例如在制作视频时需要添加字幕。而Java作为一种强大的编程语言,可以通过调用命令行工具来实现生成字幕文件的功能。本文将介绍如何使用Java调用Whisper命令来生成字幕文件,并提供相应的代码示......
  • 使用zipFile读取文件时遇到的问题及解决(KeyError: "There is no item named 'xxx' in
    问题描述在Windows上跑一段代码时,遇到如下问题:KeyError:"Thereisnoitemnamed'CDR_Data\\\\CDR.Corpus.v010516\\\\CDR_DevelopmentSet.PubTator.txt'inthearchive"原因分析这是一段Python代码,代码中使用到了zipfile库,它首先创建了一个ZipFile对象,然后在调用read()......
  • 使用Flask的Request Args实现可变URL
    什么是RequestArgsRequestArgs是一种使用在Flask框架中的特殊参数,用于接收URL地址中的变量数据,它可以帮助开发人员从URL地址中提取有价值的数据,并用于进行应用程序的设计与开发。为什么使用RequestArgs当一个网站有多个页面,或者一个页面有多个功能时,使用RequestArgs可以帮......
  • Flink自定义Assigning Timestamps和Watermarks 使用Scal语言
    Flink自定义AssigningTimestamps和Watermarks使用Scal语言为了让eventtime工作,Flink需要知道事件的时间戳,这意味着流中的每个元素都需要分配其事件时间戳。这个通常是通过抽取或者访问事件中某些字段的时间戳来获取的。时间戳的分配伴随着水印的生成,告诉系统事件时间中的......
  • ObjectMapper使用详细介绍
    ObjectMapper使用详细介绍目录简介1、ObjectMapper的常用配置2、ObjectMapper的常用方法1)json字符串转对象2)数组和对象之间转换3)集合和json字符串之间转换4)map和json字符串之间转换5)日期转json字符串6)readTree()方法简介ObjectMapper类(com.fasterxml.jackson.data......
  • Linux --CentOS系统中 使用Vscode调试shell bash脚本 环境搭建基本步骤
    Linux--CentOS系统中使用Vscode调试shellbash脚本环境搭建基本步骤操作系统:Linux--CentOS.step1:在Vscode中安装BashDebug Step2:创建一个名字为123.sh的shell脚本;输入123.sh,回车: ​​​​​​Step3:编辑简单的待打印的内容,如下: Step4:配置编译器修改......
  • windows使用VSCode进行Shell开发
    windows使用VSCode进行Shell开发 1.首先安装VScode2.安装插件:shellman(支持shell,智能提示)3.安装插件:shellcheck(shell语法检查)4.安装插件:shell-format(shell格式化)5.安装插件:code-runner(运行shell脚本)以上可以选择在应用市场安装,或者直接下载安装   运......