美文网首页
flask-请求报文

flask-请求报文

作者: 测试探索 | 来源:发表于2022-07-21 20:35 被阅读0次

    一、请求报文常用参数

    • method:请求的类型(GET/POST/OPTIONS等)
    • form:POST请求数据dict
    • args:GET请求数据dict
    • values:POST请求和GET请求数据集合dict
    • files:上传的文件数据dict
    • cookies:请求中的cookie dict
    • headers:HTTP请求头

    二、获取get参数

    from flask import Flask,current_app,request
    
    app = Flask(__name__)
    
    @app.route("/test/req")
    def test_request():
        """
        请求报文练习
        :return:
        """
        get_args = request.args
        print(get_args)
        #页码一定是正整数
        page = request.args.get("page",1)
        print(page)
        return "request success"
    
    if __name__ == '__main__':
        app.run(debug=True)
    
    
    image.png
    from flask import Flask,current_app,request
    
    app = Flask(__name__)
    
    @app.route("/test/req")
    def test_request():
        """
        请求报文练习
        :return:
        """
        get_args = request.args
        print(get_args)
        #页码一定是正整数
        page = request.args.get("page",1)
        print(page)
        # 获取服务器所在的主机地址
        headers = request.headers
        print(headers)
        print(headers.get("host"))
    
        # 获取ip地址
        ip = request.remote_addr
        print("远程iP地址",ip)
    
        # 获取User-agent
        user_agent = request.headers.get("User-Agent",None)
        print("user_agent",user_agent)
        return "request success"
    
    if __name__ == '__main__':
        app.run(debug=True)
    
    

    二、请求钩子

    应用场景
    • 每个请求中都要验证用户信息(是否已登录、是否有权限访问)
    • 限制来自某些ip的恶意请求
    • 使用钩子函数可以减少重复代码的编写,便于维护
    具体应用
    • before_first_request:在处理第一个请求前运行
      @app.before_first_request
    • before_request:在每次请求前运行
    • after_request(response):如果没有未处理的异常抛出,在每次请求后运行
    • teardown_request(response):在每次请求后运行,即使有未处理的异常
    from flask import Flask,current_app,request
    
    app = Flask(__name__)
    
    @app.route("/test/req")
    def test_request():
        """
        请求报文练习
        :return:
        """
        get_args = request.args
        #页码一定是正整数
        page = request.args.get("page",1)
        # 获取服务器所在的主机地址
        headers = request.headers
    
        # 获取ip地址
        ip = request.remote_addr
        # 获取User-agent
        user_agent = request.headers.get("User-Agent",None)
        return "request success"
    
    
    @app.before_first_request
    def first_request():
        """
        服务器启动后第一个请求到达
        :return:
        """
        print("first_request")
    
    @app.before_request
    def per_request():
        """
        每一个请求到达前
        :return:
        """
        print("befor request")
    
    if __name__ == '__main__':
        app.run(debug=True)
    
    image.png

    相关文章

      网友评论

          本文标题:flask-请求报文

          本文链接:https://www.haomeiwen.com/subject/beyyirtx.html