创建响应
字符串 & 数组
所有的路由和控制器处理完业务逻辑之后都会返回一个发送到用户浏览器的响应,Laravel 提供了多种不同的方式来返回响应,最基本的响应就是从路由或控制器返回一个简单的字符串,框架会自动将这个字符串转化为一个完整的 HTTP 响应。
Route::get('/', function () {
return 'Hello World';
});
除了从路由或控制器返回字符串之外,还可以返回数组。框架会自动将数组转化为一个 JSON 响应。
Route::get('/', function () {
return [1, 2, 3];
});
注:还可以从路由或控制器返回 Eloquent 集合,这也会被自动转化为 JSON 响应。
Response 对象
通常,我们并不只是从路由简单返回字符串或数组,大多数情况下,都会返回一个完整的 Illuminate\Http\Response 实例或视图。
返回一个完整的 Response 实例允许你自定义响应的 HTTP 状态码和头信息。Response 实例继承自 Symfony\Component\HttpFoundation\Response 基类,该类提供了一系列方法用于创建 HTTP 响应。
Route::get('/', function () {
return response('Hello World', 200)
->header('Content-Type', 'text/plain');
});
添加响应头
大部分响应方法都可以以方法链的形式调用,从而可以流式构建响应(流接口模式)。例如,在发送响应给用户前可以使用 header 方法来添加一系列响应头。
return response($content)
->header('Content-Type', $type)
->header('X-Header-One', 'Header Value')
->header('X-Header-Two', 'Header Value');
或者你可以使用 withHeaders 方法来指定头信息数组添加到响应。
return response($content)
->withHeaders([
'Content-Type' => $type,
'X-Header-One' => 'Header Value',
'X-Header-Two' => 'Header Value',
]);
添加 Cookie 到响应
使用响应实例上的 cookie 方法可以轻松添加 Cookie 到响应。例如,你可以使用 cookie 方法生成 Cookie 并将其添加到响应实例。
return response($content)
->header('Content-Type', $type)