Laravel5.3使用学习笔记--响应

忙了一个多星期,都基本没什么时间写Laravel5.3相关的使用笔记了,今天趁有点空闲就写关于“响应”的吧。
参考官方英文文档,laravel 5.3响应部分:https://laravel.com/docs/5.3/responses


一. 基本使用

在laravel5.3中响应最简单的用法就是使用 return,如:

Route::get('/', function () {
    return 'Hello World';
});

这样,就会在浏览器上看到“hello world”;

那么如果是return一个数组或对象的话,如下:

Route::get('/', function () {
    return ["hello"=>"world"];
}

这样,框架就会将该数据以json形式输出,输出结果为:{“hello”:”world”}


二. 使用Response对象构造响应结果

return response($content)
            ->header('Content-Type', $type)
            ->header('X-Header-One', 'Header Value')
            ->header('X-Header-Two', 'Header Value');

如上所示,就构造了一个由指定内容和三个指定header组成的Response对象了。
当然,laravel的Response的API也提供了另外一个类似的用法(本人感觉多此一举),如下:

return response($content)
            ->withHeaders([
                'Content-Type' => $type,
                'X-Header-One' => 'Header Value',
                'X-Header-Two' => 'Header Value',
            ]);

对了,响应除了header和content外,应该还可以携带cookie啊,于是Response就可以这样使用cookie了:

return response($content)
                ->header('Content-Type', $type)
                ->cookie('name', 'value', $minutes);

这里的cookie函数本来有7个形参,函数定义如下:

//name如果为null则返回空cookie对象
//minutes默认为0
//后面五个参数可以缺省,其中httponly默认为true
->cookie($name, $value, $minutes, $path, $domain, $secure, $httpOnly)

注意:laravel如果使用了中间件App\Http\Middleware\EncryptCookies,就会将cookie的值进行编码,编码后客户端是不能看到cookie的值的。但是我们可以选择不加载这个中间件,或者说在该中间件中指明哪些cookie键值不被编码,用法如下:

protected $except = [
    'cookie_name',  //这里填入不被编码的cookie;
];

三. 重定向

框架提供了将相应重定向到另外一个路由的用法,简单的使用如:

Route::get('路由1', function () {
    return redirect('路由2');
});

也可以将响应定义为返回之前的页面:

Route::get('路由1', function () {
    return back()->withInput();
});

或者说重定向框架中已经定义好的路由:

return redirect()->route('自定义路由别名',['键值1' => 参数1]);

或者说重定向到指定的控制器:

return redirect()->action('HomeController@index');
或
return redirect()->action(
    'HomeController@index', ['id' => 1]
);

或者说先把指定数据以session存储起来,再重定向:

//重定向前:
return redirect('dashboard')->with('status', 'Profile updated!');
//目标路由行为:
echo session('status');

四. 其他形式的相应

1.JSON相应

return response()->json([
    'name' => 'Abigail',
    'state' => 'CA'
]);

2.视图相应

return response()
            ->view('hello', $data, 200)
            ->header('Content-Type', $type);

//或者使用全局view函数:
return view("模板命名”,模板传递参数);

3.JSONP响应

return response()
            ->json(['name' => 'Abigail', 'state' => 'CA'])
            ->withCallback($request->input('callback'));

注意:JSONP是利用浏览器中JS/CSS能跨域访问的机制来实现跨域数据请求的。

4.文件下载响应

//name & header can be ignored
return response()->download($pathToFile, $name, $headers);

5.文件内容响应

//header can be ignored
return response()->file($pathToFile, $headers);

好了,laravel基础使用方法(路由、中间件、控制器、请求、响应)都基本看了一遍,而视图和blade模板就不多说了。

接下来需要进一步学习下laravel的框架思想和其他一些服务用法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值