Laravel框架学习(Response)_野蛮秘籍的博客-CSDN博客


本站和网页 https://blog.csdn.net/fationyyk/article/details/50855378 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

Laravel框架学习(Response)_野蛮秘籍的博客-CSDN博客
Laravel框架学习(Response)
野蛮秘籍
于 2016-03-11 13:26:42 发布
15769
收藏
分类专栏:
Laravel框架
文章标签:
Laravel
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/fationyyk/article/details/50855378
版权
Laravel框架
专栏收录该内容
23 篇文章
1 订阅
订阅专栏
1、Response篇 1.1 基本响应
最基本的HTTP响应只需在路由闭包或控制器动作中返回一个简单字符串即可,但是具体业务逻辑中大部分响应都是在控制器动作中返回Response实例或者视图。Response是继承自 Symfony\Component\HttpFoundation\Response的 Illuminate\Http\Response类的一个实例,我们可以使用该实例上的一系列方法来创建HTTP响应:
Route::get('response', function(){
$content = 'Hello Response';
$status = 200;
$value = 'text/html;charset=utf-8';
return response($content, $status)->header('Content-Type', $value);
});
在浏览器中访问,FireBug查看响应头信息
Illuminate\Http\Response 类中还使用了ResponseTrait,header方法正是该trait提供的,除了header之外,该trait还提供了withCookie、content和status方法。header方法用于设置响应头信息,withCookie方法用于添加cookie,这两个方法都会返回调用它的Response自身对象,所以这两个方法都支持方法链(即多次调用header或withCookie方法);而content和status方法则用于返回当前响应的响应实体内容和响应状态码。
1.2 添加Cookie 我们使用withCookie方法为响应添加cookie,由于header和withCookie支持方法链,所以我们可以这样使用:
Route::get('response', function(){
$content = 'Hello Response';
$status = 200;
$value = 'text/html;charset=utf-8';
return response($content, $status)->header('Content-Type', $value)->withCookie('test','yyktest');
});
我们还可以使用该cookie的有效期、作用域等信息:
Route::get('response', function(){
$content = 'Hello Response';
$status = 200;
$value = 'text/html;charset=utf-8';
//设置cookie有效期为30分钟,作用路径为应用根目录,作用域名为test.app
return response($content, $status)->header('Content-Type', $value)->withCookie('test','yyktest',30,'/','test.app');
});
注:withCookie方法实际上是调用了全局帮助函数cookie生成cookie,然后将cookie放到响应头中。
上图红色标注部分描述了我们在代码中自定义的cookie信息。
此外,我们还关注到该cookie是经过加密的,这一点我们在前面已经提到过,这是为了安全性考虑,如果要取消加密,在app/Http/Middleware/EncryptCookies.php文件中将对应的cookie名添加到EncryptCookies类属性$except中即可:
<?php
namespace 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 = [
'test'
];
此时再在浏览器中访问时,cookie的信息就变成yyktest,直接明文显示。当然,为了安全起见,我们不建议这么做。
2、ResponseFactory篇 response函数如果不传入参数会返回 Illuminate\Contracts\Routing\ResponseFactory契约的实现——Illuminate\Routing\ResponseFactory,该类中提供了多个方法用来生成更加丰富的响应类型,比如视图响应、JSON响应、文件下载等等。
2.1 视图响应
使用view方法即可返回一个视图作为响应内容:
Route::get('testView',function(){
$value = 'text/html;charset=utf-8';
return response()->view('hello',['message'=>'Hello view'])
->header('Content-Type',$value);
});
与之对应的,我们需要在resources/views下新建一个视图文件hello.blade.php,其内容如下:
{{$message}}
接下来我们在浏览器中访问http://selfstudy.com/testView,页面输出:
Hello View
还可以再简化,如果我们不需要自定义HTTP响应头,还可以直接使用全局帮助函数view:
Route::get('testView',function(){
$value = 'text/html;charset=utf-8';
return view('hello',['message'=>'Hello View']));
});
2.2 返回JSON/JSONP
还可以使用json方法返回json格式数据:
Route::get('testJson', function(){
return response()->json(['id'=>123, 'name'=>'yyk']);
});
json方法会自动设置Content-Type为application/json,并调用PHP内置函数json_encode讲数组转化为json格式字符串。
如果返回的是JSONP响应,也很简单,只需要在json后面再调用setCallback即可:
Route::get('testJson', function(){
return response()->json(['id'=>123,'name'=>'yyk'])
->setCallback(request()->input('callback'));
});
2.3 文件下载 使用download方法可生成用于下载给定路径文件的响应,这里我们下载上一节上传的文件:
Route::get('testDownload',function(){
return response()->download(
realpath(base_path('public/images')).'/test.jpg',
'testyyk.jpg'
);
});
本地测试的时候在项目public目录下新建images目录,并把test.jpg放入到该文件夹下。如 D:\www\laravel5.1\public\images\test.jpg 在浏览器中访问http://selfstudy.com/testDownload,页面将会下载test.jpg文件并保存为testyyk.jpg。
3、 RedirectResponse 重定向 重定向响应是 Illuminate\Http\RedirectResponse类的实例,我们通常使用全局帮助函数redirect来生成 RedirectResponse实例。和response类似,redirect函数如果接收参数则调用的是Illuminate\Routing\Redirector类的to方法,如果无参调用则返回的是Redirector对象实例。
3.1 基本重定向
Route::get('dashboard', function () {
return redirect('home/dashboard');
});
如果要重定向到上一个位置,则使用back方法:
Route::post('user/profile', function () {
// 验证请求...
return back()->withInput();
});
3.2 重定向到命名路由 使用route方法重定向到命名路由:
Route::get('/hello/laravelacademy',['as'=>'academy',function(){
return 'Hello LaravelAcademy';
}]);
Route::get('testResponseRedirect',function(){
return redirect()->route('academy');
});
如果命名路由中有参数,那么我们可以在route中传入参数:
Route::get('/hello/laravelacademy/{id}',['as'=>'academy',function($id){
return 'Hello LaravelAcademy '.$id;
}]);
Route::get('testResponseRedirect',function(){
return redirect()->route('academy',100);
});
3.3 重定向到控制器动作 使用action方法重定向到控制器动作:
Route::resource('post','PostController');
Route::get('testResponseRedirect',function(){
return redirect()->action('PostController@index');
});
当然也可以传递参数到action方法:
Route::get('testResponseRedirect',function(){
return redirect()->action('PostController@show',[1]);
});
3.4 带一次性Session数据的重定向 使用with方法可以携带一次性session数据到重定向请求页面(一次性session数据即使用后立即销毁的session数据项):
Route::post('user/profile', function () {
// 更新用户属性...
return redirect('dashboard')->with('status', 'Profile updated!');
});
这种特性通常在提交表单验证失败返回错误信息时很有用。
野蛮秘籍
关注
关注
点赞
收藏
打赏
评论
Laravel框架学习(Response)
1、Response篇 1.1 基本响应最基本的HTTP响应只需在路由闭包或控制器动作中返回一个简单字符串即可,但是具体业务逻辑中大部分响应都是在控制器动作中返回Response实例或者视图。Response是继承自 Symfony\Component\HttpFoundation\Response的 Illuminate\Http\Response类的一个实例,我们可以使用该实例上的一系列方法来
复制链接
扫一扫
专栏目录
laravel-response
03-31
幼虫React
要求
PHP> = 7.2
正在安装
$ composer require sevming/laravel-response -vvv
用法
# 1.发布配置文件
php artisan vendor:publish --provider= " Sevming\LaravelResponse\Providers\LaravelServiceProvider "
# 2.格式化异常响应
` app/Exceptions/Handler.php ` 引入 ` use Sevming \L aravelResponse \S upport \T raits \E xceptionTrait ; `
贡献
您可以通过以下三种方式之一进行贡献:
使用归档错误报告。
回答问题或修复上的错误。
贡献新功能或更新Wiki。
代码贡献过程不是很正式。 您只需要确保遵循PSR-0,PS
laravel框架安装-(妈妈级步骤)
qq_43027371的博客
09-26
28
输入【composer】测试是否安装成功。切换Composer镜像。创建Laravel框架。Laravel框架访问。php版本:7.0+安装Composer。测试Composer。
参与评论
您还未登录,请先
登录
后发表或查看评论
Laravel5.1 响应--Response
03-19
143
最基本的HTTP响应只需在路由闭包或控制器动作中返回一个简单字符串即可,但是具体业务逻辑中大部分响应都是在控制器动作中返回Response实例或者视图。Response是继承自Symfony\Component\HttpFoundation\Response的Illuminate\Http\Response类的一个实例,我们可以使用该实例上的一系列方法来创建HTTP响应:
Ro...
laravel框架的学习1安装和php artisan 命令的使用
最新发布
weixin_43517375的博客
11-09
42
aaaa
laravel(5.5)自定义middle ware
weixin_34405354的博客
03-28
197
2019独角兽企业重金招聘Python工程师标准>>>
...
Laravel Response
weixin_33744141的博客
08-28
234
2019独角兽企业重金招聘Python工程师标准>>>
...
Laravel5.5解析-$response-结构拆解
weixin_43197466的博客
05-21
229
背景:梳理$response实现的过程
地址:index.php
$response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
);
handle()
//class Illuminate\Foundation\Http\Kernel
public function handle($request)
//设定请求参数可覆盖
$request->enableH
Laravel核心解读 -- Response
kevin_tech的博客,微信搜「网管叨bi叨」
05-27
690
Response
前面两节我们分别讲了Laravel的控制器和Request对象,在讲Request对象的那一节我们看了Request对象是如何被创建出来的以及它支持的方法都定义在哪里,讲控制器时我们详细地描述了如何找到Request对应的控制器方法然后执行处理程序的,本节我们就来说剩下的那一部分,控制器方法的执行结果是如何被转换...
Laravel的HTTP响应Response
sinat_37529938的博客
03-16
736
PS:喜欢的朋友可以关注公众号:苏小怪的梦呓
前几天分析了 Laravel 框架的相关内容:
Laravel的Request请求类分析
Laravel基于Composer实现自动加载原理分析
Laravel的中间件原理
Laravel的生命周期
今天我们来看看 Laravel中是怎么处理 HTTP 响应的,也就是关于 Response 的代码分析。
找到返回 Response 的代码块
入口文件 public/index.php
首先进入 Laravel 框架的入口文件中可以看到 handle函数中 返
Laravel源码解析之Response
kevin_tech的博客,微信搜「网管叨bi叨」
01-04
138
之前两篇文章分别讲了Laravel的控制器和Request对象,在讲Request对象的那一节我们看了Request对象是如何被创建出来的以及它支持的方法都定义在哪里,讲控制器时我们详细...
laravel response增加参数
leo09999的博客
03-24
733
public function handle($request, Closure $next)
$response = $next($request);
// 获取原始的返回内容 array/object
$content = $response->getOriginalContent();
// 获取response的响应内容,比如api输出的json
...
Laravel 相应数据返回数据 response
丿灬安之若死
12-30
742
Laravel在返回数组的时候默认返回成json格式
返回response 非数组的时候默认的格式是
'Content-type','text/html'
但是我们可以修改他
public function index()
return response("<b>index</b>")
->header('Content-type','text/plain');
返回的是纯文本
...
由Laravel 的 JsonResponse对PHP基础的认识
梦之马
07-19
2452
在Controller 层我直接调用了别人的方法,他返回的是JsonResponse对象。我就想拿到其中的数据,引起了我错误的做法。
//别人的方法
public function testJsonResponse(Request $request) {
$data = [];
$data['messsage'] = "hello";
...
Laravel 如何完成beforeResponse功能?
写PHP的老王
08-02
760
背景
一般的项目需求都会要求统一的输出结构,特别是对于api应用而言。因此,如果有beforeResponse的功能,则可以在数据输出之前对response进行统一格式化处理。
假设这么一种场景,应用做api开发,使用抛异常的方式(自定义异常类ApiException)返回无效非法请求的情况。正常请求则返回合法数据(数组或可序列化的模型),希望返回的数据格式
正常请求返回数据格式:
"c...
ResponseConvertFactory类的编写
wolfking0608的博客
10-30
289
代码如下:
import com.google.gson.Gson;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import okhttp3.ResponseBody;
import retrofit2.Converter;
import retrofit2.Retrofit;
/**
...
Laravel框架之Response操作
weixin_30869099的博客
10-20
216
public function response(){ //响应json /*$data = [ 'errCode'=>0, 'errMsg' =>'success', 'data' => 'yxh', ]; return response()->json($data);*/ //重定向 ...
laravel 框架 - Controller 之 Response
GYK0812的博客
04-05
328
public function response()
// 1.响应json
$data = [
'errCode' =>0,
'errMsg'=>'sucess',
'data'=>'sean',
];
return response()->json($data);
// 2. 重定向
ret...
laravel-response-xml:添加集成laravel响应的xml方法,将雄辩的返回转换为XML
05-09
Laravel响应XML
添加集成了laravel响应的方法“ xml”,将雄辩的返回转换为XML。
作曲家的安装
composer require jailtonsc/laravel-response-xml
与Laravel 5. *集成
在位置提供程序中添加config / app.php
XmlResponse \ XmlResponseServiceProvider ::class
在适当的别名中添​​加config / app.php
'Xml' => XmlResponse \ Facades \ XmlFacade ::class
发布
php artisan vendor:publish
例子
Route :: get ( '/' , function () {
return response ()-> xml ( User :: all ());
});
Laravel 5.5 HTTP 响应
彳亍
07-22
704
创建响应
字符串 & 数组
所有的路由和控制器处理完业务逻辑之后都会返回一个发送到用户浏览器的响应,Laravel 提供了多种不同的方式来返回响应,最基本的响应就是从路由或控制器返回一个简单的字符串,框架会自动将这个字符串转化为一个完整的 HTTP 响应。
Route::get('/', function () {
return 'Hello World';
});
除了...
Laravel 5.5 Response
qq_37910492的博客
11-26
576
Response(响应)
// 添加响应头
return response($content)
->header('Content-Type', $type)
->header('X-Header-One', 'Header Value')
->header('X-Header-Two', 'Header Value')...
Laravel 响应
Stussy_Cn
04-25
1189
Laravel 响应
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
野蛮秘籍
CSDN认证博客专家
CSDN认证企业博客
码龄14年
暂无认证
129
原创
10万+
周排名
112万+
总排名
62万+
访问
等级
5756
积分
57
粉丝
62
获赞
35
评论
185
收藏
私信
关注
热门文章
a标签置灰不可点击
94322
phpstorm git使用
42903
Laravel5.* 打印出执行的sql语句
25833
Laravel框架学习(使用DB门面操作数据库 原生SQL)
24509
Laravel框架学习(Request请求数据、Cookie、文件上传)
21979
分类专栏
PHP
33篇
心情随笔
MySQL数据库
7篇
Jquery
11篇
Laravel框架
23篇
web安全
1篇
ThinkPHP框架
8篇
Composer探索
6篇
wampserver
1篇
正则表达式
3篇
Linux
30篇
javascript
4篇
环境搭建
15篇
win7系统
1篇
算法
21篇
mac
3篇
设计模式
4篇
Redis
1篇
最新评论
Jquery根据浏览器窗口改变调整大小
kbwasd:
宽度怎么改变呀,为什么我用min-width不好使呢
max os安装bison
Terence是个酷逼:
请问大佬,执行source ~/.bash_profile 命令后报错-bash: ‘export: command not found应该怎么解决
js获取上传图片宽高
IT界的骚小白:
这个获取到的宽和高不可以返回吗?需要在获取到宽高的基础上写其他逻辑我是只能在 image.onload中去继续吗?
phpstorm git使用
Owen°:
感谢大佬
a标签置灰不可点击
叫我皮卡丘:
有用,3Q
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
max os安装bison
mac下iterm2 sz rz上传文件配置
设计模式之装饰器模式
2019年2篇
2018年22篇
2017年66篇
2016年75篇
2014年5篇
2012年1篇
目录
目录
分类专栏
PHP
33篇
心情随笔
MySQL数据库
7篇
Jquery
11篇
Laravel框架
23篇
web安全
1篇
ThinkPHP框架
8篇
Composer探索
6篇
wampserver
1篇
正则表达式
3篇
Linux
30篇
javascript
4篇
环境搭建
15篇
win7系统
1篇
算法
21篇
mac
3篇
设计模式
4篇
Redis
1篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
野蛮秘籍
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值