收藏

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

2023-01-30  本文已影响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 的方式传递参数

Route::post('login/:id1/:id2','api/login/postInfo',['https' => false]);
http://abc.com/login/100/200

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

Route::post('login','api/login/postInfo',['https' => false]);
http://abc.com/login?id1=100&id2=200

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

Route::post('login','api/login/postInfo',['https' => false]);
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';
     }
}

上一篇 下一篇

猜你喜欢

热点阅读