响应就是前端页面通过发送请求给后端,后端给前端的反馈就叫响应。
在laravel中如果你直接使用return返回数组,那么laravel会隐性的帮你转换城JSON格式。

并且下面这三种的返回结果是一样的,都是JSON格式
Route::get('return',function (){
return [1,2,3];
});
Route::get('response',function (){
return response([1,2,3]);
});
Route::get('json',function (){
return response()->json([1,2,3]);
});
那么使用response的意义在哪里
当然不会是无意义的,response可以设置返回的状态码,也可以设置响应标头信息
设置状态码
Route::get('response',function (){
return response([1,2,3],201);
});
设置文档类型
Route::get('response',function (){
return response('<h1>啊哈哈哈</h1>')->header('Content-Type', 'text/plain');
});
这样浏览器页面就不会解析html标签了,会直接把标签当文本输出,甚至可以将整个模板页面不解析html直接当文本输出出来,如下:
Route::get('response',function (){
return response()->view('view',['id'=>1],201)->header('Content-Type', 'text/plain');
});
为响应附加头
return response($content)
->header('Content-Type', $type)
->header('X-Header-One', 'Header Value')
->header('X-Header-Two', 'Header Value');
return response($content)
->withHeaders([
'Content-Type' => $type,
'X-Header-One' => 'Header Value',
'X-Header-Two' => 'Header Value',
]);
路由重定向
使用redirect()->to()进行重定向:
Route::get('index',function (){
return redirect()->to('/'); //注意需要return才能生效
});
直接使用redirect()也能实现同样的效果:
//也可以这么写
Route::get('index',function (){
return redirect('/'); //注意需要return才能生效
});
使用静态方法Redirect::to():
//静态调用写法
Route::get('index',function (){
return Redirect::to('/'); //注意需要return才能生效
});
使用路由名称进行重定向
//使用路由名称进行重定向
Route::get('index',function (){
return 'index';
})->name('name');
Route::get('route',function (){
return redirect()->route('name');
});
路由回退到上一次的地址
//路由回退到上一次的地址
Route::get('back',function (){
return redirect()->back('302'); //里面可以放状态码
});
路由重定向到控制器方法
Route::get('user',function (){
return redirect()->action([TestController::class,'index'],['id'=>1]);//第二个参数可以传递参数
});
Route::get('test',[TestController::class,'index']); //如果redirect()->action()跳转的控制器方法没有注册路由,那就会报错控制器方法不存在
重定向到外部链接
Route::get('away',function (){
return redirect()->away('http://www.baidu.com');
});
为响应附加 Cookie
Route::get('cookie',function (){
return response("")->cookie('aa');
});
提前过期 Cookies
Route::get('cookie',function (){
return response('Hello World')->withoutCookie('aa');
});
文件下载
Route::get('download',function (){
return response()->download("robots.txt");
});
Route::get('download',function (){
return response()->download($pathToFile, $name, $headers);
});