HTTP响应
1 基础响应
最简单的响应
Route::get('/',function(){
return "Hello world";
});
使用响应方式进行的响应
use Illuminate\Http\Response;
Route::get('home',function(){
return(new Response($content,$status))->header('Content-Type',$value));
});
使用response helper 方法进行响应
Route::('home',function(){
return response($content,$status)->header('Content-Type',$value);
});
可以使用多次header设置更多头信息
return response($content)
->header('Content-Type',$type)
->header('X-Header-One','Header Value')
->header('X-Header-Two','Header Value');
增加 cookie 信息进行回复
return response($content)->withCookie('name','value');
其中withCookie 参数
->withCookie($name,$value,$minutes,$path,$domain,$secure,$httpOnly);
默认的cookie 都是加密的,如果想不让我们的cookie值加密,可以进行设置
对于设置的位置就是 App\Http\Middleware\EncyptCookies 里面
protected $except = [
'cookie_name',
]
2 其它响应类型
view 方式的响应方式
例如:
return response()->view('hello',$data)->header('Content-Type',$type);
JSON 方式响应
return response()->json(['name'=>'Abigail','state'=>'CA']);
JSONP跨越响应方式
return response()->json(['name'=>'lijingshan','state'=>'CA'])->setCallback($request->input('callback'));
文件下载
return response()->download(
pathToFile);returnresponse()−>download(
pathToFile,
name,
headers);
3 跳转
常规跳转
return redirect(‘home/url’);
带数据信息跳转回去
return back()->withInput();
根据路由名字进行跳转
return redirect()->route(‘login’);
return redirect()->route(‘profile’,[1]);
return redirect()->route(‘profile’,[$user]);
直接跳转到控制器方法
return redirect()->action(‘HomeController@index’);
return redirect()->action(‘HomeController@index’,[1]);
带着session信息跳转
return redirect(‘url_route’)->with(‘status’,’Profile updated’);
模版内的用法:
@if(session('status'))
<div class="alert alert-success">
{{session('status')}}
</div>
@endif
4 响应指令函数封装
如果大家拥有各种神奇的目标,可以 在 Illuminate\Contracts\Routing\ResponseFactory 里面的boot 方法里面,加上
public function boot(ResponseFactory $factory){
$factory->macro('caps',function($value)use($factory){
return $factory->make(stroupper($value));
});
}
使用过程就可以使用;
return response()->caps('foo');