Laravel HTTP 响应是服务器返回给客户端的包含状态码、响应头和响应体等信息的数据。在 Web 开发中,它决定了客户端(如浏览器)接收到的数据内容和展示形式。
- 使用辅助函数:可以通过
response
辅助函数快速创建响应对象。例如$response = response('Hello World', 200)->header('Content-Type', 'text/plain');
,创建了一个状态码为 200,内容为Hello World
,且Content-Type
头信息为text/plain
的响应。
- 在控制器方法中返回:控制器中的方法通常用来返回响应对象。如
public function showWelcomeMessage() { return response('Welcome to our site!', 200); }
。
- 使用视图1:一般控制器会返回一个视图作为响应,并可传递数据给视图。例如
return view('welcome', ['name' => 'Taylor']);
,会渲染welcome
视图,并将name
变量传递给视图。
- JSON 响应:用于返回 JSON 格式的数据,适合 API 开发等场景。示例代码为
return response()->json(['name' => 'John', 'age' => 30]);
。
- 重定向响应:用于将用户重定向到另一个 URL。比如
return redirect('/home');
,还可以使用redirect()->route('login')
重定向到命名路由。
- 文件下载响应:用于返回文件下载。例如
return response()->download($pathToFile);
,$pathToFile
是要下载的文件路径。
- 视图响应2:返回一个视图模板。如
public function show($id) { $item = Item::findOrFail($id); return view('item.show', ['item' => $item]); }
。
- 属性
- 状态码:定义 HTTP 响应的状态码,如
200
、404
、500
等。可通过$response->status(404);
设置。
- 头信息:可设置响应的头信息,如
Content-Type
、Cache-Control
等。例如$response->header('Content-Type', 'application/json');
。
- 内容:响应的主体内容,可以是字符串、数组或对象。通过
$response->content = '<html><body>Hello World!</body></html>';
设置。
- Cookie:向响应中添加 Cookie。如
$response->withCookie(cookie('key', 'value', $minutes));
。
- 方法
- with:添加属性到响应对象,如
$response->with(['key' => 'value']);
。
- cookie:创建一个新的 Cookie 实例并添加到响应,
$response->cookie('name', 'value', $minutes);
。
- json:将数组或对象转换成 JSON 格式的响应,
return response()->json(['name' => 'Taylor']);
。
- download:创建一个用于文件下载的响应,
return response()->download($pathToFile);
。
- view:返回一个视图作为响应,
return response()->view('welcome');
。
- 自定义头信息:可以根据需求自定义响应的头信息。例如
$response->header('X-Custom-Header', 'Value');
。
- 自定义状态码:设置自定义的 HTTP 状态码,如
$response->status(201);
表示Created
状态。
- 自定义内容类型:设置响应的内容类型,比如
$response->header('Content-Type', 'application/xml');
。
- 自定义响应的数据:返回自定义的数据结构,如
$data = ['status' => 'success', 'message' => 'Data retrieved successfully', 'data' => $actualData]; return response()->json($data, 200);
。
- 使用 ETag:通过设置 ETag 减少不必要的数据传输,
$response->header('ETag', md5($response->getContent()));
。
- 压缩响应:使用压缩算法减少响应体的大小,
$response->header('Content-Encoding', 'gzip');
。
- 缓存控制:通过设置合适的缓存策略提高响应速度,
$response->header('Cache-Control', 'max-age=3600');
。