【前端】路由请求中参数的读取方法

0 说明

在浏览器打开链接的时候,需要读取https://www.test.com/#/?queryScene=A&queryData=B这样的路由请求中的参数,然后根据参数走不同的流程或者请求不同的接口


1 实现

方法1 vue-router

vue-router中,使用路由守卫async beforeEnter(to, from, next)
然后通过to.query.queryScene即可获得它的值A

方法2 window.location.search

封装一个方法getParameter

export function getParameter(param){
  let url = window.location.search;
  var query = url.slice(url.indexOf('?'));
  var iLen = param.length + 1;
  var iStart == query.indexOf(param + '=');
  if (iStart == -1) return '';
  iStart += iLen;
  var iEnd =query.indexOf('&', iStart);
  if (iEnd == -1) return query.substring(iStart);
  return query.subString(iStart, iEnd);
}

这样,只需要通过调用getParameter('queryData')即可获得它的值B
但是要注意,hash模式下,#符之后的内容都会被当做hash值,无法通过window.locaion.search的方式获得

方法3 window.locaion.href

因为hash模式下,存在方法2中的局限,所以将方法中的window.location.search修改为window.locaion.href即可


2 总结

获取路由请求中的参数是常见的场景,可以通过方法封装,简化代码

### 后端接收前端请求后的路由机制 在构建Web应用程序时,后端服务器负责处理来自客户端的各种HTTP请求,并根据这些请求执行相应的操作。对于Python环境下的Flask框架而言,其核心特性之一便是能够轻松定义和管理API路由。 #### Flask中的路由定义方式 为了使应用可以响应特定URL模式的访问,在Flask中可以通过`@app.route()`装饰器来指定路由规则[^4]: ```python from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/register', methods=['POST']) def register(): data = request.get_json() username = data['username'] password = data['password'] # 假设此处有验证逻辑及数据库交互过程 response_data = {'status': 'success'} return jsonify(response_data) @app.route('/login', methods=['POST']) def login(): data = request.get_json() username = data['username'] password = data['password'] # 验证用户名密码是否匹配,假设已存在相应查询函数verify_user_credentials(username, password) if verify_user_credentials(username, password): token = generate_token() # 创建token用于保持会话状态 response_data = { "message": "Login successful", "token": token, "status": "success" } return jsonify(response_data), 200 else: error_message = {"error": "Invalid credentials", "status": "fail"} return jsonify(error_message), 401 ``` 上述代码展示了两个基本的RESTful API接口——注册(`/register`)与登录(`/login`)。当接收到对应路径上的POST请求时,程序将调用对应的视图函数处理业务逻辑并向客户端反馈结果。 #### 请求解析与参数获取 针对不同类型的HTTP方法(如GET或POST),可以从不同的位置读取传递过来的数据。例如,对于JSON格式的body体内容,则可通过`request.get_json()`方法直接转换成字典对象方便后续使用;而对于表单提交的形式则应该采用`request.form`属性提取键值对信息。 #### 数据库连接与SQL语句执行 考虑到题目提到需利用PyMySQL完成实际项目开发工作,下面给出一段简单的示例说明如何安全有效地同关系型数据库打交道: ```python import pymysql.cursors connection = pymysql.connect( host='localhost', user='root', password='', database='test_db', cursorclass=pymysql.cursors.DictCursor ) def insert_into_users_table(data_dict): try: with connection.cursor() as cursor: sql = """INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)""" cursor.execute(sql, (data_dict["email"], hash_password(data_dict["password"]))) connection.commit() except Exception as e: print(f"Error occurred while inserting into users table: {e}") ``` 此部分实现了新用户的创建流程,即把收集到的新账户资料存入预设好的表格结构内。值得注意的是,在真实场景下应当采取措施保护敏感字段的安全传输与存储,比如加密算法的应用等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值