javaee论坛

普通会员

225648

帖子

352

回复

366

积分

楼主
发表于 2017-07-19 16:09:48 | 查看: 151 | 回复: 3
前一篇介绍了请求,接下来就是发送给用户响应了。

自动创建响应

例如我们在路由文件中这么设置:

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中进行设置:

<?phpnamespace 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);


普通会员

1

帖子

321

回复

329

积分
沙发
发表于 2022-05-05 16:04:26

楼主说得对

普通会员

0

帖子

342

回复

352

积分
板凳
发表于 2022-05-10 17:25:13

围观

普通会员

2

帖子

302

回复

315

积分
地板
发表于 2024-04-29 01:28:18

谢谢楼主分享

您需要登录后才可以回帖 登录 | 立即注册

触屏版| 电脑版

技术支持 历史网 V2.0 © 2016-2017