Laravel请求/响应/Cookie/Session
- 本节主要为请求Request部分
- 主要为请求、响应、Cookie、Session
- 参考文献为 https://laravel.com/api/5.6/Illuminate/Http/Request.html
一、请求Request
-
通过依赖注入的方式来获取当前的HTTP请求的实例,应该在控制器方法中类型提示Illuminate\Http\Request。
-
传入的请求的实例将通过服务容器自动注入
-
使用的方式,Request的常用方法
$request->ip(); // 获取访问者的ip地址 $request->userAgent(); // 获取访问者代理 $request->route(); // 获取路由请求的详情 $request->header(); // 获取请求头信息 $request->url(); // 获取请求地址 不包括查询字符串 $request->fullUrl(); // 获取请求地址 包括查询字符串 $request->path(); // 获取请求路径 $request->method(); // 获取请求的方法 $request->isMethod(); // 判断请求的方法
1.1. 获取request数据获取
-
路由带参数获取,可以在形参的地方添加要获取的
$参数
public function index(Request $request, $uid) { ... }
-
使用常用方法
$request->get('name', 默认值); // 获取get方式请求的数据 $request->query('name', 默认值); // 查询字符串,不添加任何参数,获取所有的 $request->post('name', 默认值); // 获取post发送的数据 // 推荐使用input来获取参数,基本可以解决问题 $request->input('name', 默认值); // 获取get/post发送的数据;不带参数,获取所有 $request->all(); // 获取所有的发送的数据 $request->only(数组); // 获取指定的name $request->except(数组); // 不获取指定的name // 功能使用 $request->merage(数组); // 合并新的数据到请求数据中 $request->repalce(数组); // 替换请求数据 $request->keys(); // 获取所有的name $request->has(name); // 判断是否传过来值 $request->file(); // 获取文件的信息
二、相应Response
-
可以直接return字符串,如果返回的是数组的话,会默认返回Json的格式返回。
-
可以使用助手函数
response($data, 状态码);
,这样就不用直接使用use做引入了。 -
可以操作header
// 其中可以修改header中的字段 return response($data, 301)->header('Content-Type', 'application/json');
-
也可以相应cookie
-
相应json的方式,jsonp的相应,jsonp表示跨域的环境下进行请求
// 普通的json的相应 return response()->json('数组'); return response()->json('数组')->withCallback($request->input('callback'));
-
Response返回下载文件,还可以对文件重命名
return response()->download('Postmain.exe');
2.1 重定向
- 重定向相应是
Illuminate\Http\RedirectResopnse
类的实例,助手函数redirect(),具体的使用方法为return redirect(路由);
- 重定向到外部的域名,
return redirect()->away('http://www.baidu.com');
- 重定向并使用闪存的Session数据,
return redirect('test')->with('name', 'liudehua');
- 模版访问,用
session('name');
- 重定向到之前位置,
return back()->with('name', 'liudehua');
- 跳转到上一级的目录,
return back();
三、Cookie
-
引入cookie,不建议用cookie的助手函数,
use Illuminate\Support\Facades\
// 这个时候并没有设置cookie $cookie = Cookie::make($key, $value, $minutest); // 加入到队列 Cookie::queue($cookie);
-
获取cookie,
Cookie::get($key);
-
删除cookie,
$user = Cookie::forget('username'); Cookie::queue($user);
-
判断cookie是否存在,
dd(Cookie::has('username'));
四、Session
- 配置文件在session.php,session可以存到文件里,也可以存到数据库里
- 引入session,
use Illuminate\Support\Facades\Session;
- session 的储存,
Session::put('name', 'liudehua');
,里面也可以使用数组的形式。 - 获取session,
Session::get('name');
- 删除session,
Session::forget('name');
- 判断是否存在session,
Session::has('key1');
- 清空所有的session,
Session::flush();
- 助手函数不用引用,直接存储即可,推荐使用,
session(['email' => '[email protected]']);
,用助手函数只能用数组。 - 获取session中的内容,
session('email');