跳转到主要内容

什么是响应

控制器或路由必须向用户的浏览器返回某种响应。 Laravel 提供了简单的机制来返回字符串、数组、视图、重定向、JSON 等多种形式的响应。

基本响应

返回字符串

最简单的响应就是直接返回字符串。 Laravel 会自动将其转为合适的 HTTP 响应。

返回数组

若返回数组,Laravel 会自动将其转换为 JSON 格式响应。
直接返回 Eloquent 模型或集合也会自动转换为 JSON 格式。这是一种非常方便构建 API 的常见模式。

返回 Eloquent 模型

Response 对象

使用 response() 辅助函数可以返回带有 HTTP 状态码、请求头等详细信息的响应。
response() 的第一个参数是响应体,第二个参数是 HTTP 状态码。

常用 HTTP 状态码

视图响应

要从控制器返回 Blade 模板,请使用 view()。 这是 Web 应用中最常见的响应类型。
view() 的第一个参数是视图名,第二个参数是要传给视图的数据数组。
为返回值类型指定 Illuminate\View\View 可以让代码意图更清晰。

使用 response()->view() 进行细粒度控制

若需要同时指定状态码和请求头,可使用 response()->view()

重定向

基本重定向

redirect() 辅助函数会返回重定向响应。 表单提交后跳转到另一个页面时经常使用。
在控制器中的用法:

重定向到命名路由

使用 route() 函数可以不直接写 URL,而通过路由名指定跳转目标。 即使 URL 发生变化也无需修改代码,因此推荐使用命名路由。

返回上一页

back() 让用户返回上一个页面,常用于校验失败后的重定向。

带闪存消息的重定向

使用 with() 可以在 Session 中附带一条消息进行重定向。 适合表单提交成功后的提示。
在 Blade 模板中显示消息。

JSON 响应

构建 API 时,使用 response()->json() 返回 JSON 响应。 它会自动设置 Content-Type: application/json 头。
也可以指定状态码。
在控制器中的用法:
直接返回数组或 Eloquent 模型也会得到 JSON 响应,但 response()->json() 能更细致地控制状态码与请求头。

响应头

使用 header() 方法可以向响应添加 HTTP 头。
若要一次设置多个响应头,可以使用 withHeaders()

实践示例:控制器中的用法差异

下面是根据用途区分响应的示例。
1

定义路由

2

实现控制器

在 Web 应用中,最基本的模式就是区分 ViewRedirectResponse。展示型的动作返回 View;创建、更新、删除等修改型动作在处理完成后返回 RedirectResponse

下一步

校验

在返回响应之前,学习如何通过校验来验证输入数据。
最后修改于 2026年7月18日