响应
前一篇介绍了请求,接下来就是发送给用户响应了。
自动创建响应
例如我们在路由文件中这么设置:
Route::get('user',function(){
return 'hello world';
});
这里的return 'hello world';
中的hello world
字符串会自动被封装成一个响应,返回给用户。Laravel中的响应类是:Illuminate\Http\Response
Response对象
header方法
可以自定义HTTP请求中的Header头,这一部分我是真不熟。
cookie方法
可以设置响应中的cookie,另外,所有的cookie都是经过加密的,如果你不想加密该cookie的话,那么可以在app\Http\Middleware\EncryptCookie.php
中进行设置:
<?php
namespace App\Http\Middleware;
use Illuminate\Cookie\Middleware\EncryptCookies as BaseEncrypter;
class EncryptCookies extends BaseEncrypter
{
/**
* 这个
* @var array
*/
protected $except = [
//
];
}
这种方式和解除CSRF保护的设置方式很像。
重定向
这个大概是最重要的内容之一了。这里直接看例子吧。
redirect()
直接跳转到对应的路由设置:return redirect('users/');
回到前一个页面
return back();
如果想回到前一个页面时保留用户的输入信息,那么可以这么设置:
return back()->withInput();
使用路由name设置
假设在路由设置中是这样设置的:Route::get('users','UserController')->name('homepage')
,那么可以这样设置重定向后的跳转方式:
return redirect()->route('homepage');
当然就跟调用route()
函数一样,可以直接传递进去参数。
return redirect()->route('homepage',['name'=>'trouble i am in']);
重定向到控制器和对应方法
return redirect()->action('UserController@show')
传递参数:
return redirect()->action('UserController@show',['id'=>1]);
缓存
可以在重定向时进行一次性缓存:
return redirect()->with('key','value');
然后就可以在外部直接调用session('key')
就可以读取缓存的值了。
返回视图
return view('user');
当然可以往视图中传入数据:
return view('user',['userName'=>'trouble i am in']);
JSON响应
return response()->json(['name'=>'trouble i am in','age'=>23]);
这里会自动在后台调用PHP的json_encode
对数组进行处理。
文件预览
该方法可以将文件发送客户的浏览器,方便用户进行预览,如果用户想要该文件,那么再进行下载。就像我们可以在线预览一篇PDF,但是下载的话就需要点击后才可以进行下载。
return response()->file($filePath);
在该函数中也可以将头部信息进行插入:
return response()->file($filePath,$headerInfo);