laravel_基础_Response|redirect|cookie|view|json|jsonp|download
来源:互联网 发布:大学生消费水平的数据 编辑:程序博客网 时间:2024/05/22 07:06
1.Response
Response是继承自 Symfony\Component\HttpFoundation\Response的 Illuminate\Http\Response类的一个实例。
用法:
return (new Response($content,$status));return response($content,$status);
1.1创建一个带header信息的Response实例:
<?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;use Illuminate\Http\Response;use App\Http\Requests;class ResponseController extends Controller{ public function getIndex() { $content = 'Hello'; $status = 200; $value = 'text/html;charset=utf-8'; return (new Response($content,$status))->header('Content-Type',$value); }}
然后访问xxx/response在浏览器按F12看请求头信息
如果把$status改成500看看。
1.2使用全局函数response()返回一个response实例:
public function getIndex() { $content = 'Hello'; $status = 200; $value = 'text/html;charset=utf-8'; // return (new Response($content,$status))->header('Content-Type',$value); return response($content,$status)->header('Content-Type',$value); }
【注意】:header方法用于设置响应头信息,withCookie方法用于添加cookie,这两个方法都会返回调用它的Response自身对象,所以这两个方法都支持方法链(即多次调用header或withCookie方法);而content和status方法则用于返回当前响应的响应实体内容和响应状态码。
1.3添加cookie
用法:(上一节有讲到)
withCookie();
详细参数说明:
public function getIndex() { $content = 'Hello'; $status = 200; $value = 'text/html;charset=utf-8'; // withCookie() 接收完整参数:cookie名、值、有效期(分钟)、作用路径(根目录)、作用域名 return response($content,$status)->header('Content-Type',$value) ->withCookie('cookie01','cookie01.org',1,'/','laravel.app'); }
【注意】:有效期不设置默认是关闭浏览器后失效。
浏览器访问xxx/response,按F12查看cookie
以上方法设置的cookie默认是加密的
不加密的cookie:
如果要取消加密,在app/Http/Middleware/EncryptCookies.php文件中将对应的cookie名添加到EncryptCookies类属性$except中即可:
<?phpnamespace App\Http\Middleware;use Illuminate\Cookie\Middleware\EncryptCookies as BaseEncrypter;class EncryptCookies extends BaseEncrypter{ /** * The names of the cookies that should not be encrypted. * * @var array */ protected $except = [ // 'cookie01', ];}
浏览器重新访问xxx/response,按F12查看cookie,发现cookie没加密,这里只是测试,实际项目中绝不这么做。
2.ResponseFactory篇(返回视图、json、下载)
response函数如果不传入参数会返回 Illuminate\Contracts\Routing\ResponseFactory契约的实现——Illuminate\Routing\ResponseFactory,该类中提供了多个方法用来生成更加丰富的响应类型,比如视图响应、JSON响应、文件下载等等。
用法:
return response()->view();return view();return response()->json();return response()->download();
2.1视图响应view
返回带响应头的视图:
public function getView() { $value = 'text/html;charset=utf-8'; // 如果返回的视图需要手动设置HTTP响应头,需要这样写: return response()->view('hello',['message'=>'Hello LaravelAcademy']) ->header('Content-Type',$value); }
【注意】:需要在resources/views下新建一个视图文件hello.blade.php,其内容如下:
{{$message}}
直接返回视图view:
public function getView() { $value = 'text/html;charset=utf-8'; // 如果返回的视图需要手动设置HTTP响应头,需要这样写: return response()->view('hello',['message'=>'Hello LaravelAcademy']) ->header('Content-Type',$value); // 直接返回视图 return view('hello',['message'=>'Hello LaravelAcademy']); }
2.2返回json/jsonp
返回json:
return response()->json(['name'=>'LaravelAcademy','passwd'=>'LaravelAcademy.org']);
如果返回的是JSONP响应,也很简单,只需要在json后面再调用setCallback即可:
return response()->json(['name'=>'LaravelAcademy','passwd'=>'LaravelAcademy.org']) ->setCallback(request()->input('callback'));
2.3文件下载download
实例:
public function getDownload() { // download() 接收两个参数:资源完整路径包括文件名、另存的文件名 return response()->download(base_path('public\images').'\QQ图片20160623001337.jpg','test.jpg'); }
3.重定向redirect
重定向响应是 Illuminate\Http\RedirectResponse类的实例,我们通常使用全局帮助函数redirect来生成 RedirectResponse实例。和response类似,redirect函数如果接收参数则调用的是Illuminate\Routing\Redirector类的to方法,如果无参调用则返回的是Redirector对象实例。
用法:
redirect();back();redirect->route();redirect()->action();redirect()->with();
直接重定向到一个指定的url
return redirect('home/request');
重定向到上一个url
// 验证请求...return back()->withInput();
重定向到路由route
return redirect()->route('request');
//重定向带参数,request_param这个路由方法的写法:/request/param/{id},这样就能接收到$id=100return redirect()->route('request_param',100);
重定向到控制器动作
return redirect()->action('PostController@index');// 带参数return redirect()->action('PostController@show',[1]);
重定向带一次性session
return redirect('request')->with('status', 'Profile updated!');
- laravel_基础_Response|redirect|cookie|view|json|jsonp|download
- laravel_基础_Request请求/Cookie/文件上传
- json-ajax-jsonp-cookie
- laravel_基础_中间件
- Laravel_基础_view共享数据
- json、jsonp、jsonp跨域
- JSON JSONP
- json 、jsonp
- Json & Jsonp
- Json Jsonp
- json&jsonp
- json,jsonp
- json,jsonp
- laravel_基础_路由及CSRF防护等
- laravel_基础_简单博客_RESTFul风格控制器(resource)
- laravel_安装
- Remote JSON - JSONP
- JSON 和 JSONP
- 课程练习四-problemW
- 分享到QQ、QZone方法,无需登录
- 论文阅读:Comparative Study of Deep Learning Software Frameworks( caffe、Neon、TensorFlow、Theano、Torch 之比较)
- mac chrome 常用插件
- 摆脱VC++6.0,教你如何用visual Studio2010完美运行C++程序
- laravel_基础_Response|redirect|cookie|view|json|jsonp|download
- IEEE POSIX 标准
- linux网络编程中tcp
- python2.x代码自动转换成python3.x
- The new way of ioctl()----转自LWN.net
- session 和cookie 的异同
- 计算机科学的知识领域
- kmp模版poj3461
- 打造自己的通用适配器