zoukankan      html  css  js  c++  java
  • Flask(4)- URL 组成部分详解

    URL

    • Uniform Resource Locator 的简写,中文名叫统一资源定位符
    • 用于表示服务端的各种资源,例如网页
    • 下面将讲解 Flask 中如何提取组成 URL 的各个部分
     

    URL 组成详解

    一个常见的 url

    https://www.cnblogs.com/poloyy/

    由以下几部分组成

    scheme://host:port/path?key=value
    • scheme:代表的是访问的协议,一般为 http 或者 https。例如,https://www.baidu.com 的协议是 https;
    • host:主机名、域名,例如,https://www.baidu.com 的 host 为 www.baidu.com;
    • port:端口号,http 协议默认使用 80 端口,https 协议默认使用 443 端口。通常情况下,使用默认值,不需要显式的写明端口号,例如,https://www.baidu.com 的端口是 443。某些情况下,可以显式的写明端口号,例如,http://localhost:5000 的端口号是 5000;
    • path:页面路径,例如:https://www.cnblogs.com/poloyy/的 path 是 poloyy/;
    • key=value:查询字符串,例如:https://www.baidu.com/s?wd=python,查询字符串是 wd=python,查询字符串包括两部分:参数名和参数值,这个例子中,参数名是 wd,参数值是 python

    在 Flask 中分析 URL 参数

    • 服务端收到将客户端发送的数据后,封装形成一个请求对象,在 Flask 中,请求对象是一个模块变量 flask.request
    • request 对象包含了众多的属性
    • 假设 URL 等于 http://localhost/query?userId=123,则与 URL 参数相关的属性如下:
    属性说明
    url http://localhost/query?userId=123
    base_url http://localhost/query
    host localhost
    host_url http://localhost/
    path /query
    full_path /query?userId=123

    实际栗子

    #!/usr/bin/python3
    from flask import Flask
    from flask import request
    app = Flask(__name__)
    
    def echo(key, value):
        print('%-10s = %s' % (key, value))
    
    @app.route('/query')
    def query():
        echo('url', request.url)
        echo('base_url', request.base_url)
        echo('host', request.host)
        echo('host_url', request.host_url)
        echo('path', request.path)
        echo('full_path', request.full_path)
        print()
    
        print(request.args)
        print('userId = %s' % request.args['userId'])
        return 'hello'
    
    if __name__ == '__main__':
        app.run(port = 80)

    浏览器访问

    http://127.0.0.1:5000/query?userId=123

    控制台输出结果

    url        = http://127.0.0.1:5000/query?userId=123
    base_url   = http://127.0.0.1:5000/query
    host       = 127.0.0.1:5000
    host_url   = http://127.0.0.1:5000/
    path       = /query
    full_path  = /query?userId=123
    
    ImmutableMultiDict([('userId', '123')])
    userId = 123

    总结

    request 还有很多其他属性,后面会陆续讲到 

  • 相关阅读:
    zabbix 添加 微信、邮件 媒介详解
    zabbix使用之常用功能使用心得
    Nginx1.8源码包编译安装
    httpd启动显示Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName'
    apache-httpd2.4编译安装
    apache-httpd2.2编译安装
    MYSQL5.7源码包编译安装
    MYSQL常见安装错误集:[ERROR] --initialize specified but the data directory has files in it. Abort
    MYSQL启用数据库错误:ERROR 2002 (HY000)
    编译mysql时CMake Error at cmake/readline.cmake:85 (MESSAGE)
  • 原文地址:https://www.cnblogs.com/poloyy/p/14994380.html
Copyright © 2011-2022 走看看