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

 

 

 

————————————————
版权声明:本文为CSDN博主「@Winner」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zxh7770/article/details/94358417

 

posted @ 2021-06-03 17:11  搬砖小伙子  阅读(593)  评论(0编辑  收藏  举报