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 还有很多其他属性,后面会陆续讲到

Flask(4)- URL 组成部分详解的更多相关文章

  1. URL组成部分详解

    URL组成部分详解 URL是Uniform Resource Locator的简写,统一资源定位符. 一个URL是由以下几部分组成的: scheme://host:port/path/?query-s ...

  2. NSURL组成部分详解

    手思中有这么一段代码,初看下,让人摸不着头脑 //功能:UIWebView响应长按事件 -(BOOL)webView:(UIWebView *)webView shouldStartLoadWithR ...

  3. mysql:JDBC url 参数详解

    MySql链接url参数详解 jdbc:mysql://[host:port],[host:port].../[database][?参数名1][=参数值1][&参数名2][=参数值2]... ...

  4. 第五篇Django URL name 详解

    Django URL name 详解 利用Django开发网站,可以设计出非常优美的url规则,如果url的匹配规则(包含正则表达式)组织得比较好,view的结构就会比较清晰,比较容易维护. Djan ...

  5. 输入一个url全过程详解

    1. 用户在浏览器中输入url,浏览器接收到url. 2.浏览器接收到这个url之后,会根据这个url会先查看缓存,如果有缓存且没有过期的话直接提供给客户端,完成页面渲染. 3.否则浏览器就会通过DN ...

  6. Flask源码剖析详解

    1. 前言 本文将基于flask 0.1版本(git checkout 8605cc3)来分析flask的实现,试图理清flask中的一些概念,加深读者对flask的理解,提高对flask的认识.从而 ...

  7. Flask框架 之 功能详解

    浏览目录 配置文件 路由系统 视图 请求相关 响应 模板渲染 session 闪现 中间件 蓝图(blueprint) 特殊装饰器 配置文件 知识点 给你一个路径 “settings.Foo”,可以找 ...

  8. Flask框架之功能详解

    1|0浏览目录 配置文件 路由系统 视图 请求相关 响应 模板渲染 session 闪现 中间件 蓝图(blueprint) 特殊装饰器 1|1配置文件 知识点 给你一个路径 "settin ...

  9. Django URL name详解

    我们基于上一节的代码来开始这一节的内容. 上节源代码:zqxt_views(django 1.4 - django 1.10).zip [更新于 2016-09-06 00:13:23] 1. 打开 ...

随机推荐

  1. phpMyAdmin 4.0.x—4.6.2 远程代码执行漏洞(CVE-2016-5734)

    影响范围 4.0.10.16之前4.0.x版本 4.4.15.7之前4.4.x版本 4.6.3之前4.6.x版本(实际上由于该版本要求PHP5.5+,所以无法复现本漏洞) 需要登录,且能够写入数据 p ...

  2. tp3 联表查询

    联表查询D("column") ->field("{$DbPrefix}column.pid,{$DbPrefix}news.*") ->where ...

  3. noip模拟33[进阶啦啦啦]

    noip模拟33 solutions 不知道该咋说,这场考试其实是我这三四场以来最最最最最顺心的一场了 为啥呢?因为我这回思考有很多结果,得到了脑袋的回复 就是你想了半个小时就有了一点点头绪,那感觉就 ...

  4. 初探Docker CentOS 7.9 2009 Mini 操作系统环境初始化 和Docker初始化

    初探docker 什么是docker?docker就是一种虚拟化技术,将一个服务虚拟化成一个拥有操作系统内核作为基石的快速使用服务.不用担心环境不同服务效果 不同. docker 官网可以从中央仓库中 ...

  5. JavaGUI输入框事件监听的使用

    JavaGUI输入框事件监听的使用 package GUI; import java.awt.*; import java.awt.event.ActionEvent; import java.awt ...

  6. 超详细 Java 15 新功能介绍

    点赞再看,动力无限.微信搜「程序猿阿朗 」,认认真真写文章. 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录,有很多知识点和系列文章. Java 15 在 2 ...

  7. 【笔记】初探KNN算法(2)

    KNN算法(2) 机器学习算法封装 scikit-learn中的机器学习算法封装 在python chame中将算法写好 import numpy as np from math import sqr ...

  8. SpringBoot开发二十三-统一记录日志

    统一记录日志 AlphaAspect package com.nowcoder.community.aspect; import org.aspectj.lang.ProceedingJoinPoin ...

  9. Typora+Markdown便捷发布blog

    参考文章:https://www.cnblogs.com/Heroge/p/12459762.html 需要下载Typora和dotnet Typora下载链接:https://www.typora. ...

  10. Upfile的几种常见姿势

    记录一下文件上传的常见姿势,更全面的可以做upload-labs. 实验环境:win2003 phpstudy 实验平台:upfile 一.准备上传的一句话木马 eval函数将接受的字符串当做代码执行 ...