首页 > 编程语言 >软件测试|探索Flask接口路由技术:构建灵活可拓展的Python应用

软件测试|探索Flask接口路由技术:构建灵活可拓展的Python应用

时间:2024-01-20 22:33:08浏览次数:28  
标签:Flask app URL Python user route 路由 软件测试

软件测试|探索Flask接口路由技术:构建灵活可拓展的Python应用_应用程序

测试管理班是专门面向测试与质量管理人员的一门课程,通过提升从业人员的团队管理、项目管理、绩效管理、沟通管理等方面的能力,使测试管理人员可以更好的带领团队、项目以及公司获得更快的成长。提供 1v1 私教指导,BAT 级别的测试管理大咖量身打造职业规划。

什么是路由

路由是将 URL 地址与应用程序中的函数相映射的过程。当用户在浏览器中输入特定的 URL 地址时,Flask 会调用与该地址相匹配的函数并返回相应的结果。

路由的应用场景

在 Web 应用程序都通过路由技术使用 URL 链接来控制网页显示的内容,只要知道 URL 链接,即使没有主页导航也可以直接访问所需网页。

通过 Flask 实现路由

路由类型

实现方式

基本路由

@app.route('/')

动态路由

@app.route('/user/')

限定类型

@app.route('/post/int:post_id')

在 Flask 中,可以使用 @app.route() 装饰器来定义路由。路由决定了用户请求的 URL 路径与对应的视图函数之间的关系。

基本路由

基本路由定义方式为:

from flask import Flask

# 创建 Flask 应用程序实例
app = Flask(__name__)

# 定义基本路由
@app.route("/")
def index():
    return "Home Page"

@app.route("/about")
def about():
    return "About Page"

# 运行应用程序
if __name__ == '__main__':
    app.run()

在上述示例中,@app.route('/')@app.route('/about') 分别定义了根路径'/'/about 的路由。当用户访问这些路径时,Flask 会调用对应的视图函数并返回相应的内容。

@app.route('/') 访问地址为 http://127.0.0.1:5000/@app.route('/about')访问地址为 http://127.0.0.1:5000/about

动态路由

URL 中某些地方存在可变部分,为动态的 URL,Flask 支持这种动态 URL。

动态路由是通过尖括号 <> 实现的,放在尖括号里面的部分为动态部分,即在装饰器 route 传入 <> 部分,定义视图函数时,将该 <> 里面的内容作为参数传入到函数里面即可。

比如路由 /user/Harry 后面想要根据不同的用户名,返回不同的数据。这种情况可以用变量来代替名字部分:@app.route('/user/<username>')

这时 username 传入不同的值时,比如依次传入 HarryRonHermione,那么对应的路由就变为:/user/Harry/user/Ron/user/Hermione

# 定义动态路由
@app.route("/user/<username>")
def user_info(username):
    return f"User {username} is select info."

访问:http://127.0.0.1:5000/user/Ron

查看服务端日志,会有一条返回信息:User Ron is select info.

限定类型

如果希望限定输入的动态字段的类型,可以使用 <类型:变量名> 来实现,例如如果希望某个字段只能是整数,那么可以写为 /user/<int:user_id>

# 限定类型的动态路由
# 类型限定为整型
@app.route("/user/<int:user_id>")
def user_id(user_id):
    # 展示给定的用户 ID,ID 为整型
    return f"User ID is {user_id}"

# 类型限定为 path(可以包含 /)
@app.route('/path/<path:sub_path>')
def show_subpath(sub_path):
    # 展示 path 后的子路由
    return f'Subpath is {sub_path}'

Flask 支持在路由上使用的类型有 intfloatstringpathpath 类型是字符串的一种,不同的是它可以包含正斜线。

路由规则 Flask 的 URL 规则基于 Werkzeug 的路由模块。可以确保形成的 URL 是唯一的,并且基于 Apache 规定的先例。

@app.route('/about')
def about():
    return 'About Page'

@app.route('/hogwarts/')
def hello_hogwarts():
   return 'Hello Hogwarts'

if __name__ == '__main__':
    app.run()

这两个路由定义的例子看起来类似,其实是不一样的。

在第二个例子中,路由的尾部使用斜杠 (/)。因此,它成为一个规范的URL。这时 Flask 会自动进行重定向。当在浏览器的地址栏中不输入 / 时,会自动在尾部加上一个斜杠。也就是在浏览器的地址栏中输入/和不输入 /的效果是一样的。

而第一个例子中,路由的尾部没有 /。那么访问的时候,在浏览器的地址栏中不能输入 /,否则会产生 “Not Found” 的错误。这样可以保持 URL 唯一。


标签:Flask,app,URL,Python,user,route,路由,软件测试
From: https://blog.51cto.com/u_15649298/9346698

相关文章

  • 软件测试/测试开发/全日制|Page Object模式:为什么它是Web自动化测试的必备工具
    为UI页面写测试用例时(比如web页面,移动端页面),测试用例会存在大量元素和操作细节。当UI变化时,测试用例也要跟着变化,PageObject很好的解决了这个问题。使用UI自动化测试工具时(包括selenium,appium等),如果无统一模式进行规范,随着用例的增多会变得难以维护,而PageObject让自......
  • Python Matplotlib 多个坐标系下绘制多个图像
    ​ 1、绘制图像使用 plt.subplots()可以创建一个图形对象以及一个或多个子图(axes)对象。使得在同一个窗口中绘制多个图像变得非常简单和直观。使用 plt.subplots(),可以轻松地管理多个子图的布局,并且可以对每个子图进行独立的绘图和自定义设置。常用参数如下,参数说明......
  • 【办公自动化】Python执行Windows命令
    ##第一部分:引言在Python中,我们可以使用`os`模块来执行Windows命令。`os`模块提供了许多与操作系统交互的函数,包括执行系统命令。以下是一个简单的示例,展示了如何使用Python执行Windows命令。##第二部分:导入os模块首先,我们需要导入`os`模块。在Python脚本的开头添加以下代码:`......
  • 【办公自动化】Python执行Windows命令
    第一部分:引言在Python中,我们可以使用os模块来执行Windows命令。os模块提供了许多与操作系统交互的函数,包括执行系统命令。以下是一个简单的示例,展示了如何使用Python执行Windows命令。第二部分:导入os模块首先,我们需要导入os模块。在Python脚本的开头添加以下代码:importos第......
  • Python实战:selenium模拟浏览器运行,获取软科网站2023中国大学排名
    Python实战:selenium模拟浏览器运行,获取软科网站2023中国大学排名在爬取一些加密的网页时,可以使用selenium模拟浏览器运行,再从网页中提取想要的数据。使用的库本文使用到的Python库有:selenium、bs4、pandas使用selenium解决网页的反爬使用bs4对html网页进行解析和提取数据......
  • python+flask_restful使用jwt
    正在做毕设,由于毕设需求使用python+flask,使用jwt目的是对请求进行保护,我的项目采用vue3+flask前后端分离实现,进入正题:使用jwt,首先下载扩展pipinstallFlask-JWT-Extended然后在项目中注册使用,我的项目结构是这样的 在exts.py中引入jwt扩展,fromflask_jwt_extendedimpo......
  • Python实现线性判别分析鸢尾花数据集或随机生成两个线性可分的数据集
    线性判别分析是一种经典的线性学习方法,在二分类问题上最早由Fisher在1936年提出,亦称Fisher线性判别。线性判别的思想非常朴素:给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近,异类样例的投影点尽可能远离;在对新样本进行分类时,将其投影到同样的直线上,再根据......
  • 软件测试的原则有哪些?全文干货!
    前言大家好,我是chowley,最近阅读了不少博客,感觉在软件测试原则方面的内容还是太冗余和笼统,今天我来精简一下,用少量的语言告诉你最干活的东西!软件测试的原则全面性(Exhaustiveness):确保测试覆盖所有可能的情况,包括正常和异常情况。同时,测试应该尽可能地涵盖各种输入和使用情境。......
  • Python中的回调函数
    先来看一个程序:deff1():print(2)return1deff2(a):print(3)returnaprint(f2(f1()))这个程序,在调用时,f2会先等待f1调用完毕,返回1之后,再进行调用,所以会输出2、3、1,但是若这样改写程序deff1():print(2)return1deff2(f):prin......
  • 【Python】查找和删除表格中的重复行
    查找:importpandasaspddf=pd.read_excel("秘籍.xlsx")#打开list1=[]foriinrange(df.shape[0]):#总行数list1.append(list(df.values[i]))#将每行以列表的形式装入列表forxinlist1:iflist1.count(x)>1:#如果列表中元素出现次数>1prin......