发送请求----发送带参数的请求----获取请求参数
如何发送请求
发送请求格式:域名/模块/控制器/方法名
模块是sample
控制器是Test
方法是hello
发送请求 z.cn/sample/Test/hello
文件结构
如何将参数也传过去? 放在问号后面
z.cn/sample/Test/hello?id=123&name=php&age=100
定义路由
如果在application的route.php设置(定义路由)Route::get('hello','sample/Test/hello');
发送请求 z.cn/sample/Test/hello 报错
因为定义了相关的路由,原来的访问方式就不能使用了
正确的请求应为 z.cn/hello?id=123&name=php&age=100
错误信息
post请求时
application的route.php设置(定义路由)Route::post('hello:/id','sample/Test/hello');
请求为
z.cn/hello/123?name=php
post的内容放在body
post请求
如何获取参数
方法1:简单传参
namespace app\sample\controller;
class Test
{
public function hello($id, $name, $age)
{
// 简单的传参 不够灵活
echo $id;
echo $name;
echo $age;
}
}
方法2:使用Request对象
2-1实例化request对象
namespace app\sample\controller;
use think\Request;
class Test
{
public function hello()
{
// 一次获取全部的参数
$all = Request::instance()->param();
var_dump($all);
// 实例化Request对象
/*$id = Request::instance()->param('id');
$name = Request::instance()->param('name');
$age = Request::instance()->param('age');*/
}
}
如何根据参数类型获取参数?
namespace app\sample\controller;
use think\Request;
class Test
{
public function hello()
{
// 只获取?后面的参数 get()
$all = Request::instance()->get();
var_dump($all);
// 只获取路径的参数 (在route定义了的)
$all = Request::instance()->route();
var_dump($all);
// 只获取post的参数
$all = Request::instance()->post();
var_dump($all);
/* get() post() route() 方法里面可以带参数名
* get('name')...
* */
}
}
2-2依赖注入方式
不需要实例化request对象
namespace app\sample\controller;
use think\Request;
class Test
{
public function hello(Request $request)
{
$all = $request->param();
return var_dump($all);
$all = $request->route();
return var_dump($all);
}
}
2-3使用助手函数简化代码
不需要使用think\Request类
namespace app\sample\controller;
class Test
{
public function hello()
{
$all = input('get.');
var_dump($all);
$all = input('post.');
var_dump($all);
$all = input('param.');
var_dump($all);
$all = input('param.age');
echo $all;
}
}