uniapp路由传多个参数_Laravel 路由详解

本文详细介绍了Laravel框架中的路由配置、基础路由定义、CSRF攻击防范、参数传递、路由别名、路由分组以及查看路由。重点讲解了如何设置路由规则、避免CSRF验证,并提到了优化URL管理和权限控制的方法。
摘要由CSDN通过智能技术生成

4d76d754378e6771705d1f24d3456f9b.png

Laravel路由

laravel是一个强路由的框架,所有的请求都必须先定义好路由才能访问。

1、路由配置文件

路由文件的位置:项目目录/routes/web.php文件

2、4种基础路由的定义(重点)

Route::请求方式('uri',匿名函数);
#从服务器取出资源(一项或多项) 
Route::get($uri, $callback);
#在服务器新建一个资源 insert
Route::post($uri, $callback);
#在服务器更新资源  update
Route::put/patch($uri, $callback);
#从服务器删除资源 delete
Route::delete($uri, $callback);
4种基础路由中,只有GET请求方式不进行CSRF验证,其它请求方式则需要CSRF验证

3、CSRF

1.CSRF(Cross-site request forgery)跨站请求伪造,攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。

2.laravel框架中,路由定义在routes/web.php文件中,就会自带有csrf验证功能。

3.并不是所有请求都需要进行CSRF攻击防御的,比如去第三方API获取数据的请求。可以通过在 app/Http/Middleware/VerifyCsrfToken.php文件中将要排除的请求URI添加到$except属性数组中。

4、其它路由

# 一次性匹配多种请求类型
Route::match(array(请求方式,多个以逗号隔开),$uri, $callback);
# 匹配所有请求 工作不用  不安全
Route::any($uri, $callback);
注:如果路由请求方法没有定义,请求不存在的方法,报405状态

5、路由参数

url地址可以通过query方式去传参数,但是不美观且还不利于seo优化。laravel提供一种路由参数的机制,更佳优美的方式来进行参数的传递。laravel路由参数不用使用$_GET函数来获取,只能通过它自身的方式来获取。

# 必填
Route::get('URI/{参数名称}','闭包函数或控制器响应方法标识');
# 可选
Route::get('URI/{参数名称?}','闭包函数或控制器响应方法标识');
# 参数限制
Route::get('URI/{参数名称}','闭包函数或控制器响应方法标识')->where(['参数名称'=>'正则']);

6、路由别名

作用:方便管理生成的URL地址 和 权限控制

Route::get('/user/{id}',function($id){
	return "当前用户id是:" . $id;
}) -> name('名字');
# 生成了对应的URL地址      参数
$url = route('路由名称',[array(key=>value)]);

7、路由分组之路由前缀

很多路由都有相同的前缀,每次都需要敲一遍太繁琐,所以就可以把统一的前缀摘出来 做路由分组

可以用 prefix 方法为路由组中给定的 URL 增加前缀。例如,你可以为组中所有路由的 URI 加上 admin 前缀:

Route::prefix('admin')->group(function () {
    Route::get('users', function () {
        // 匹配包含 "/admin/users" 的 URL
    });
});

路由名称前缀

name 方法可以用来给路由组中的每个路由名称添加一个给定的字符串。 例如,您可能希望以 「admin」为所有分组路由的名称加前缀。 给定的字符串与指定的路由名称前缀完全相同,因此我们将确保在前缀中提供尾部的 . 字符:

Route::name('admin.')->group(function () {
    Route::get('users', function () {
        // 路由分配名称“admin.users”...
    })->name('users');
});

8、查看定义好的路由

php artisan route:list
### 回答1: 在Uniapp中,我们可以通过以下方式传递多个参数: 1.使用query参数传递 在跳转到新页面时,可以在url中添加多个参数,如下所示: ```javascript // 发送请求并传递多个参数 uni.navigateTo({ url: '/pages/myPage/myPage?name=小明&age=18&gender=男' }) // 接收参数 export default { onLoad(options) { console.log(options.name) // 小明 console.log(options.age) // 18 console.log(options.gender) // 男 } } ``` 我们可以通过options的方式获取传递过来的参数。 2.使用params参数传递 与query不同,params是在路由上定义的参数,通常在路由跳转时使用,如下所示: ```javascript // 定义路由参数 { path: '/myPage/:name/:age/:gender', component: () => import('@/pages/myPage/myPage.vue') } // 发送请求并传递多个参数 uni.navigateTo({ url: '/pages/myPage/小明/18/男' }) // 接收参数 export default { computed: { name() { return this.$route.params.name // 小明 }, age() { return this.$route.params.age // 18 }, gender() { return this.$route.params.gender // 男 } } } ``` 与query不同,params需要在路由上定义参数才能使用,并且使用this.$route.params来获取传递过来的参数。 以上就是在Uniapp传递多个参数的方法,开发者可以根据自身的需求选择使用哪种方法。 ### 回答2: 使用Vue.js的uni-app框架可以很方便地实现页面多个参数。通常我们会使用一个对象来存储多个参数。 首先,在需要传递参数的页面中,可以通过uni.navigateTo或uni.redirectTo方法跳转到下一个页面,传递参数时需要将参数封装在一个对象中,并将该对象作为query参数传递。 例如: ``` uni.navigateTo({ url: '/pages/detail/detail?id=' + id + '&name=' + name + '&age=' + age }) ``` 可以改为: ``` uni.navigateTo({ url: '/pages/detail/detail', query: { id: id, name: name, age: age } }) ``` 接收参数的页面需要在onLoad生命周期函数中通过this.$route.query获取传递参数对象。 例如,假设我们在detail页面中要获取id,name和age参数,代码如下: ``` onLoad() { this.id = this.$route.query.id; this.name = this.$route.query.name; this.age = this.$route.query.age; } ``` 最后,我们可以在页面中使用this.id、this.name和this.age来获取对应的参数值。 总体来说,uni-app框架提供了非常方便的页面参方式,使用对象进行参数封装,可以轻松传递多个参数,并且在接收参数的页面中,通过this.$route.query获取传递参数对象,非常方便。 ### 回答3: 在开发uniapp应用时,经常需要将多个参数传递给另一个页面。这个过程可以通过以下步骤完成: 1. 定义传递参数的格式 在发送页面中,需要定义传递参数的格式。最常见的格式是JSON格式,也可以使用类似URL参数的方式传递参数。无论哪种格式,都需要确定每个参数的名称和值。例如,{name: "张三", age: 18}就是一个JSON格式的参数。 2. 使用uni.navigateTo跳转到目标页面 用uni.navigateTo()方法打开目标页面,同时将参数传递给它。例如: ``` uni.navigateTo({ url: '/pages/detail/detail?name=' + name + '&age=' + age }) ``` 通过在URL中添加参数的方式,将参数传递给目标页面。在此例中,参数名和值是name和age。 3. 目标页面接收参数并处理 在目标页面中,可以通过以下代码获取传递参数: ``` onLoad: function (options) { this.setData({ name: options.name, age: options.age }) } ``` 在onLoad钩子函数中获取传递参数值,同时将它们设置为data里的属性,供页面使用。 4. 在目标页面中使用参数 在目标页面中,已经将传递参数保存在data中,可以在模板中使用。例如,如果希望显示传递的name和age,可以在wxml中这样写: ``` <view>姓名:{{name}}</view> <view>年龄:{{age}}</view> ``` 以上就是传递多个参数的流程。需要注意的是,在发送页面和目标页面中都需要定义相同的参数格式,以确保参数可以正确传递和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值