跳转到主要内容

什么是 Request 对象

Illuminate\Http\Request 是一个用面向对象方式处理应用所接收 HTTP 请求的类。 你可以通过它访问请求中包含的所有信息,包括表单数据、查询字符串、上传文件、请求头等。

向控制器注入请求

在控制器方法中,只要为 Illuminate\Http\Request 添加类型提示,Laravel 的服务容器就会自动注入请求实例。
在路由闭包中也可以以相同方式添加类型提示。

与路由参数一起使用

如果控制器方法同时接收路由参数,请把路由参数写在 Request 之后。

获取请求数据

获取所有输入数据

all 方法将所有输入数据以数组形式返回。 无论是 HTML 表单请求还是 XHR 请求都可以使用。

获取指定字段

input 方法与 HTTP 方法无关,会从整个请求负载(包括查询字符串)中读取值。
在第二个参数中可以指定值不存在时的默认值。
数组类型的输入可以使用点号记法访问。

获取查询字符串

query 方法只从查询字符串(URL 中 ? 之后的部分)中获取值。
input 同时覆盖请求体和查询字符串,而 query 只覆盖查询字符串。 如果要区分表单 POST 数据和 URL 参数,可以使用 query

类型化获取

除了 input 外,Laravel 还提供了按指定类型获取值的方法。

动态属性

也可以直接以字段名作为属性来访问。
使用动态属性时,会先在请求负载中查找值,若找不到再在路由参数中查找。

获取部分输入数据

可以通过 onlyexcept 获取输入数据的子集。

判断输入是否存在

使用 has 方法判断请求中是否包含某个值。
如果要排除空字符串,判断是否有值,请使用 filled
若值不存在或为空字符串,可以使用 isNotFilled

请求路径与方法的判定

获取和判定路径

获取 URL

判断 HTTP 方法

使用 isMethod 判断 HTTP 方法。

文件上传

获取已上传的文件

使用 file 方法获取上传的文件。 它会返回一个 Illuminate\Http\UploadedFile 实例。
要判断文件是否存在,请使用 hasFile

保存文件

使用 store 方法将文件保存到存储中。 文件名会自动生成。
如果需要指定文件名,请使用 storeAs
接受文件上传时,务必校验文件的种类和大小。 建议使用校验来安全地处理。

示例:接收表单数据

以下示例展示了在控制器中接收用户注册表单数据。
定义对应的路由。

下一步

中间件

回顾如何使用中间件对请求进行过滤。
最后修改于 2026年7月18日