php--laravel框架接收http请求时携带的参数,及定义路由是带的参数。

php–laravel框架接收http请求时携带的参数,及定义路由是带的参数。

通过http的形式访问路由,通过http携带参数;

1,浏览器中输入:http://www.redshop.com/admins/adminlist?curr=2&limit=10

小编这里是用到了layui的分页技术,鼓捣了好几天才得到正确的结果。
在这里插入图片描述

2,路由的定义

这里给小伙伴提醒一下哈,小编这里就有一个误区,通过http访问时候携带的参数跟路由中传递的参数是有区别的,在定义路由的时候如果要是携带参数【Route::match([‘get’,‘post’],’/adminlist/{参数1}/{参数2}’,‘AdminListController@index’);】那么在请求路由的时候一定要带着这两个参数,http://www.redshop.com/admins/admins/参数1/参数2, 通过上面的图中浏览器的地址,我们并没有携带这两个参数。而是前端通过http的方式给我们传递了两个参数【http://www.redshop.com/admins/adminlist?curr=2&limit=10】 这个时候我们就要通过控制器里面的依赖注入也就是通过Request 接收。详细看控制器中书写

Route::match(['get','post'],'/adminlist','AdminListController@index');
3,控制器接收参数
public function index(Request $request){
    //接收http请求时带的参数。http://www.redshop.com/admins/adminlist?curr=2&limit=10
    //数据总条数
    $count = \DB::select("select count(id) as num from admin");
    $limit = $request->input('limit');
    $curr = $request->input('curr');
    $startno = ($curr-1)*$limit;
    //$data = \DB::table('admin')->get();
    $data = \DB::select("select * from admin limit $startno,$limit");
    $data_arr = [];
    foreach ($data as $v){
        //@<winner>格式化时间
        $v->create_time = date('Y-m-d H:i:s',$v->create_time);
        $v->last_time = date('Y-m-d H:i:s',$v->last_time);
        unset($v->pass);
        $data_arr[] = $v;
    }
    $data = $this->formatData($data_arr,$count[0]->num);
    return $data;
    }

通过http携带参数访问路由,并接收:

0,浏览器中输入:http://localhost:8000/store?name=12,结果如下:

在这里插入图片描述

1,创建控制器路由访问该控制器下的index方法:
Route::match(['get','post'],'/stores','StoresController@index');
2,创建控制器

在控制器中获取当前请求实例,只需要在构造方法或普通方法中对Illuminate\Http\Request 类进行依赖注入即可,具体实现如下:
在App\Http\Controllers\UserController.php控制器下的index方法进行依赖注入获取当前请求的name值
说白了,就是通过Request接收数据

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class StoresController extends Controller
{
    //接收http请求路由时携带的参数
    public function index(Request $request){
        //http://www.laravel.com/stores?name=winner 
        //接收http请求的参数name,并输出。
        $name = $request->input('name');
        echo $name;
    }
}

通过路由定义参数,并且通过http请求时访问

0,浏览器中输入:http://www.laravel.com/stores/id=1?name=winner

在这里插入图片描述

1,对stores的路由进行稍微的改动
Route::match(['get','post'],'/stores/{id}','StoresController@index');
2,对刚刚stores控制器下面的index方法进行修改
class StoresController extends Controller
{
    //接收http请求路由时携带的参数
    public function index(Request $request,$id){
        //http://www.laravel.com/stores?name=winner 
        //接收http请求的参数name,并输出。
        //$name = $request->input('name');
        //echo $name;

        $name = $request->input('name');
        echo 'name='.$name .'---'.'id='.$id;

    }
}
通过路由闭包访问请求
访问方式:http://www.laravel.com/rest?name=winner

在这里插入图片描述

路由
// 通过路由闭包访问请求
Route::get('/rest',function(Illuminate\Http\Request $request){
    $name = $request->input('name');
    echo $name;
});

请求路径&请求方法

Illuminate\Http\Request 继承自 Symfony\Component\HttpFoundation\Request 类,提供了多个方法来检测应用的 HTTP 请求,下面我们来演示其提供的一些获取请求路径和请求方式的方法:

获取请求路径
path方法将会返回请求的路径信息,如果请求URL是 http://www.laravel.com/user/1,则 path 方法将会返回 user/1,具体实现如下:
Route::get('/user/{id}',function(Illuminate\Http\Request $request){
    $path = $request->path();
    echo $path;
});

访问上述路由结果如下:
在这里插入图片描述

is 方法允许你验证请求路径是否与给定模式匹配。该方法参数支持 * 通配符,具体实现如下:
Route::get('/user/{id}',function(Illuminate\Http\Request $request){
    if ($request->is('user/1')) {
        echo '你的路径没毛病';
    }else{
        echo '你的路径有问题';
    }
});

访问对的路径:www.laravel.com/user/1
在这里插入图片描述
访问错的路径:www.laravel.com/user/2
在这里插入图片描述

通配符*

只要是路由没问题,路径一直都匹配。

Route::get('/user/{id}',function(Illuminate\Http\Request $request){
    if ($request->is('user/*')) {
        echo '你的路径没毛病';
    }else{
        echo '你的路径有问题';
    }
});

访问:http://www.laravel.com/user/2
在这里插入图片描述
访问:http://www.laravel.com/user/3
在这里插入图片描述
访问:http://www.laravel.com/use1r/3

因为user是路由,user后面的都算是路径,这样输入路由就不正确了。
在这里插入图片描述
访问:http://www.laravel.com/user/3/3
因为路由后面只有一个参数,输入多个参数路由就不对了。

在这里插入图片描述

获取请求URL

想要获取完整的 URL,而不仅仅是路径信息,可以使用请求实例提供的 url 或 fullUrl 方法, url 方法返回不带查询字符串的 URL,而 fullUrl 方法返回结果则包含查询字符串,具体实现如下:
依旧把Illuminate\Http\Request依赖注入到路由里:

//获取请求url
Route::get('/url/{id}',function(Illuminate\Http\Request $request){
    $url = $request->url();
    echo $url;
    //包含查询字符串,也就是通过http的方式请求,在请求时通过 ? 携带的参数。http://www.laravel.com/url/id=1?name=winner
   $url_with_query = $request->fullUrl();
   echo "</br> $url_with_query";
});

访问路径:http://www.laravel.com/url/id=1?name=winner
在这里插入图片描述

获取请求方法

method 方法将会返回 HTTP 请求方式。你还可以使用 isMethod 方法来验证 HTTP 请求方式是否匹配给定字符串,具体实现如下:

//获取请求方法
Route::get('/me',function(Illuminate\Http\Request $request){
   if ($request->isMethod('get')) {
       echo '我是get请求';
   }else{
       echo '我是其他方式请求,反正不是get';
   }
});

访问方式:http://www.laravel.com/me
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值