美文网首页收藏
thinkphp5.0 路由传参和路由参数获取

thinkphp5.0 路由传参和路由参数获取

作者: 暴躁程序员 | 来源:发表于2023-01-30 10:40 被阅读0次

    一、路由定义

    在路由配置文件router.php中

    use think\Route;
    // 增删改查路由
    Route::rule('login','api/login/getInfo','GET',['https' => false]); // 定义GET请求路由规则
    Route::rule('login','api/login/postInfo','POST',['https' => false]); // 定义POST请求路由规则
    Route::rule('login','api/login/putInfo','PUT',['https' => false]);  // 定义PUT请求路由规则
    Route::rule('login','api/login/deleteInfo','DELETE',['https' => false]); // 定义DELETE请求路由规则
    //Route::rule('login','api/login/Info','GET|POST',['https' => false]);  // 定义GET和POST请求路由规则
    //Route::rule('login','api/login/allInfo','*',['https' => false]); // 所有请求都支持的路由规则
    
    // 增删改查路由 - 简化
    Route::get('login','api/login/getInfo',['https' => false]); // 定义GET请求路由规则
    Route::post('login/:id','api/login/postInfo',['https' => false]); // 定义POST请求路由规则
    Route::put('login','api/login/putInfo',['https' => false]);  // 定义PUT请求路由规则
    Route::delete('login','api/login/deleteInfo',['https' => false]); // 定义DELETE请求路由规则
    //Route::any('login','api/login/allInfo',['https' => false]); // 所有请求都支持的路由规则
    

    二、路由参数传递的三种方式(以post请求为例)

    1. 在URL后通过 /value 的方式传递参数

    • 在路由配置文件router.php中定义参数名
    Route::post('login/:id1/:id2','api/login/postInfo',['https' => false]);
    
    • 前端在URL中拼接参数
    http://abc.com/login/100/200
    

    2. 在URL后通过 ?key=value 的方式传递参数

    • 在路由配置文件router.php中
    Route::post('login','api/login/postInfo',['https' => false]);
    
    • 前端在URL中拼接参数
    http://abc.com/login?id1=100&id2=200
    

    3. 通过post的方式传递参数

    • 在路由配置文件router.php中
    Route::post('login','api/login/postInfo',['https' => false]);
    
    • 前端以post的方式传递参数
    http://abc.com/login
    
    // 参数
    {
    "id1":100,
    "id2":200
    }
    

    二、路由参数获取的三种方式

    1. 在方法中以参数名为方法参数,可获取get和post类型的参数

    在Login.php控制器中

    namespace app\api\controller;
    class Login
    {
        public function postInfo($id1,$id2){
            echo $id1;
            echo $id2;
            echo 'post info';
        }
    }
    

    2. 在方法中通过Request类获取参数,可获取get和post类型的参数

    在Login.php控制器中

    namespace app\api\controller;
    use think\Request;
    class Login
    {
        public function postInfo(){
            $id1 = Request::instance()->param('id1'); // 可获取get和post类型参数
            $id2 = Request::instance()->param('id2'); // 可获取get和post类型参数
    
            $id1_post = Request::instance()->post('id1'); // 只获取post类型参数
            $id1_get = Request::instance()->get('id1'); // 只获取get类型参数
    
            $param_array = Request::instance()->param(); // 以数组的方式获取get和post类型的所有参数
            $param_array_get = Request::instance()->get(); // 以数组的方式获取get类型的所有参数
            $param_array_post = Request::instance()->post(); // 以数组的方式获取post类型的所有参数
    
            echo $id1;
            echo $id2;
            echo $id1_post;
            echo $id1_get;
    
            print_r($param_array);
            print_r($param_array_get);
            print_r($param_array_post);
            echo 'post info';
        }
    }
    

    或者用依赖注入的方式

    namespace app\api\controller;
    use think\Request;
    class Login
    {
        public function postInfo(Request $request){
            $id1 = $request->param('id1'); // 可获取get和post类型参数
            $id2 = $request->param('id2'); // 可获取get和post类型参数
    
            $id1_post = $request->post('id1'); // 只获取post类型参数
            $id1_get = $request->get('id1'); // 只获取get类型参数
    
            $param_array = $request->param(); // 以数组的方式获取get和post类型的所有参数
            $param_array_get = $request->get(); // 以数组的方式获取get类型的所有参数
            $param_array_post = $request->post(); // 以数组的方式获取post类型的所有参数
    
            echo $id1;
            echo $id2;
            echo $id1_post;
            echo $id1_get;
    
            print_r($param_array);
            print_r($param_array_get);
            print_r($param_array_post);
            echo 'post info';
        }
    }
    

    3. 在方法中通过助手函数获取参数,可获取get和post类型的参数

    在Login.php控制器中

    namespace app\api\controller;
    class Login
    {
         public function postInfo(){
             $id1 = input('param.id1'); // 可获取get和post类型参数
             $id2 = input('param.id2'); // 可获取get和post类型参数
       
             $id1_post = input('post.id1'); // 只获取post类型参数
             $id1_get = input('get.id1'); // 只获取get类型参数
       
             $param_array = input('param.'); // 以数组的方式获取get和post类型的所有参数
             $param_array_get = input('get.'); // 以数组的方式获取get类型的所有参数
             $param_array_post = input('post.');; // 以数组的方式获取post类型的所有参数
       
             echo $id1;
             echo $id2;
             echo $id1_post;
             echo $id1_get;
       
             print_r($param_array);
             print_r($param_array_get);
             print_r($param_array_post);
             echo 'post info';
         }
    }
    
    

    相关文章

      网友评论

        本文标题:thinkphp5.0 路由传参和路由参数获取

        本文链接:https://www.haomeiwen.com/subject/vcxphdtx.html