软件测试|测试平台开发-Flask 入门:URL组成部分详解

举报
Tester_muller 发表于 2023/10/19 18:27:18 2023/10/19
【摘要】 简介Flask 是一款流行的 Python Web 框架,它简单轻量而灵活,适用于构建各种规模的 Web 应用程序。在 Flask 中,URL(Uniform Resource Locator)是指定 Web 应用程序中资源的唯一标识符。URL 组成部分是构成一个完整 URL 的不同部分,包括协议、主机名、端口号、路径和查询参数等。在本文中,我们将深入探讨 Flask URL 的组成部分及...

image.png

简介

Flask 是一款流行的 Python Web 框架,它简单轻量而灵活,适用于构建各种规模的 Web 应用程序。在 Flask 中,URL(Uniform Resource Locator)是指定 Web 应用程序中资源的唯一标识符。URL 组成部分是构成一个完整 URL 的不同部分,包括协议、主机名、端口号、路径和查询参数等。在本文中,我们将深入探讨 Flask URL 的组成部分及其作用。

URL 组成详解

下面是我们常见的一个URL

https://blog.csdn.net/Tester_muller

由以下几部分组成

scheme://host:port/path?key=value
  • Scheme(协议):URL 的第一部分是协议,它指定了客户端要使用的通信协议。在 Web 应用中,常见的协议是 HTTP 和 HTTPS。HTTP(HyperText Transfer Protocol)是一种用于传输超文本的协议,而 HTTPS(HTTP Secure)是通过 SSL/TLS 加密保护的安全 HTTP 协议。

注:在 Flask 中,默认使用的是 HTTP 协议,可以通过配置来启用 HTTPS,确保数据在传输过程中的安全性。在 URL 中,协议部分通常以 “http://” 或 “https://” 开头。

  • Host(主机):URL 的主机名部分指定了 Web 服务器的域名或 IP 地址。它告诉客户端应该连接到哪个服务器以获取所需的资源。例如,URL “http://example.com” 中的 “example.com” 就是主机名。

在 Flask 中,主机名默认为 “localhost”,表示 Web 应用程序运行在本地主机上。当我们在开发环境中运行 Flask 应用时,默认监听在本地主机上。但在部署到生产环境时,我们通常会使用真实的域名或 IP 地址作为主机名。

  • Port(端口):端口号是 Web 服务器上监听客户端请求的特定端口。它允许多个网络服务在同一 IP 地址上运行。在 Flask 中,默认情况下使用的端口号是 5000。

  • Path(路径):路径部分指定了 Web 服务器上资源的具体位置。在 Flask 中,路径对应于路由(Routes),它告诉应用程序如何处理来自客户端的请求。

  • key=value:查询字符串,例如:https://www.baidu.com/s?wd=selenium,查询字符串是 wd=selenium,查询字符串包括两部分:参数名和参数值,这个例子中,参数名是 wd,参数值是selenium

示例:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello, World!'

@app.route('/about')
def about():
    return 'This is the about page.'

URL “http://example.com/” 会触发 hello 函数,而 URL “http://example.com/about” 则会触发 about 函数。

路径部分可以包含多个层级,例如 “/user/profile” 或 “/blog/post/123”。在 Flask 中,我们可以使用装饰器 @app.route() 来指定不同路径对应的处理函数。

Flask 中分析 URL 参数

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

查询参数

查询参数允许客户端向服务器传递额外的数据。它们通常以键值对的形式出现,中间使用 “&” 进行分隔。在 Flask 中,可以通过 request.args 属性来获取查询参数。

例如,URL “http://example.com/search?q=flask&limit=10” 中的查询参数是 “q=flask&limit=10”,其中 “q” 和 “limit” 是参数名,“flask” 和 “10” 是对应的值。在 Flask 中,可以通过以下方式获取查询参数:

from flask import Flask, request

app = Flask(__name__)

@app.route('/search')
def search():
    query = request.args.get('q')
    limit = request.args.get('limit')
    # 处理查询逻辑
    return f'Searching for "{query}" with limit {limit}.'

示例

from flask import Flask,request

app = Flask(__name__)

def echo(key, value):
    print('%-10s = %s' % (key, value))

@app.route('/search')
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:80/search?userId=001

控制台输出结果如下:

127.0.0.1 - - [24/Jul/2023 14:35:39] "GET /search?userId=001 HTTP/1.1" 200 -
url        = http://localhost/search?userId=001
base_url   = http://localhost/search
host       = localhost
host_url   = http://localhost/
path       = /search
full_path  = /search?userId=001

ImmutableMultiDict([('userId', '001')])
userId = 001

总结

Flask URL 的组成部分是构成一个完整 URL 的关键要素,它们包括协议、主机名、端口号、路径和查询参数。在开发 Flask 应用时,了解 URL 的构成部分是至关重要的,因为它们直接影响着客户端如何与服务器交互,以及服务器如何响应这些请求。通过合理设计 URL 结构,我们可以使 Web 应用更加易读、易用和易于维护。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。