获取请求/响应对象
- 请求对象
Request Object
使用依赖注入
的方式来获取请求对象$request
use Illuminate\Http\Request;
Route::get('/request', function (Request \$request) {
// $request只是个形参, 不一定非要使用 $request
dd(\$request); // dd是一个助手函数
});
- 响应对象
Response Object
使用助手函数来获取响应对象
use Illuminate\Http\Request;
Route::get('/response', function () {
// $request只是个形参, 不一定非要使用 $request
$response = response();
dd($response);
});
Request 对象获取请求信息
- method() 获取请求的方法,返回请求类型字符串
- isMethod('post') 判断请求方法, 返回布尔值
- path() 获取路径信息, 返回路径信息字符串
- url() 获取完整的请求url, 返回url字符串
- port() 获取请求的端口, 返回端口号 integer
- cookie('key') 获取cookie信息
- ip() 获取请求的ip, 返回ip字符串
use Illuminate\Http\Request;
public function getRequestPath(Request \$request) {
// http://www.study.io/user/edit/3:80
$request->method(); // GET
$request->isMethod('post'); // false
$request->path(); // user/edit/3
$request->url(); // http://www.study.io/user/edit/3:80
$request->port(); // 80
$request->cookie('name');
$request->ip();
}
Request 对象获取上传文件信息
- has('file') 判断是否有某个文件,返回布尔值
- file('file') 获取上传的文件, 返回一个包含文件信息的对象
- isValid() 判断文件是否上传成功, 返回布尔值
- path() 获取上传文件的路径, 返回绝对路径字符串
- extension() 获取上传文件的后缀
- move() 移动文件
use Illuminate\Http\Request;
public function getFiles(Request \$request) {
if ( $request->has('file') ) {
$fileObject = $request->file('file');
$bool = $fileObject->isValid();
$path = $fileObject->path();
$ext = $fileObject->extension();
$fileObject->move('upload/path', 'fileName'); // bool
}
}
基本响应
- return 字符串 / 数组
- response('message', httpStatusCode) Response 对象
- header('key','value') 返回信息并设置响应头
- withHeaders(['key'=>'value']) 设置多个响应头信息
- cookie('key', 'value') 添加cookie信息到响应
如果是字符串或者数组,可以使用 return
语句来响应
Route::get('/response', function () {
// return 'strin';
// return [ 'name' => 'alex', 'age' => 18 ];
// return response('message', 200);
// return response()->json(['name' => 'alex', 'age' => 18]);
// return response('<h1>hello world</h1>', 200)->header('content-type', 'text/html');
/*
return response('<h1>你好, 世界!</h1>', 200)->withHeaders([
'content-type' => 'text/html;charset=UTF-8',
'test-content' => 'hello world',
]);
*/
// return response('response success', 200)->cookie('name', 'user1', 10);
return redirect('/');
});
重定向响应
- redirect() 重定向到指定的路由
- route() 重定向到指定名称的路由
- action() 重定向到控制器
- away() 重定向到外部域名
- with() 重定向并且带session数据
Route::get('/redirect', function () {
// return redirect('/admin/user/create');
// return redirect()->route('login');
// return redirect()->action('admin\UserController\create');
// return response()->away('http://wwww.baidu.com');
// return view('admin.user.create'); // 或者 return response()->view('admin.user.create');
return response()->with('key', 'value')->with(['k'=>'v', 'k2'=>'v2']);
});
其他响应
- view() 视图响应
- json() json 响应
- jsonp() JSONP 响应
- download() 文件下载响应
- file() 文件响应
Route::get('/response/other', function () {
// return response()->json(['name' => 'tom', 'age' => 18]);
// return response()->jsonp($request->input('callback'), ['name' => 'tom', 'age' => 18]);
// return view('admin.user.create'); // 或者 return response()->view('admin.user.create');
// return response()->download($filePath);
// return response()->file($filePath, $headers)
//
});