Laravel中POST与PATCH请求的控制器数据获取问题
Laravel PATCH请求无法用
$req->post()获取参数的原因及解决办法 问题原因
Laravel的$req->post()方法是专门用于获取POST请求的表单参数的,它只会读取POST请求的表单数据。对于PATCH、PUT这类非POST类型的请求,该方法无法捕获请求体中的参数,因此返回null。
可行的解决方案
1. 使用通用参数获取方法
Laravel的Request类提供了兼容所有HTTP请求类型的通用参数获取方法:
$req->input('参数名'):推荐使用,可获取任意请求类型(POST/PATCH/PUT/GET)的参数,还支持设置默认值(例如$req->input('strTable', '默认表名'))$req->all():获取所有请求参数并返回数组,可通过键名直接取值,比如$req->all()['strTable']$req->json('参数名'):如果请求体是JSON格式,用这个方法精准获取参数
2. 修正PATCH控制器代码
将原来的$req->post('strTable')替换为通用方法即可:
public function patchRecords(Request $req): array { // 推荐写法 $this->arrRecordsPatchParameters['_strTable'] = $req->input('strTable'); // 或者用all()批量获取 // $allParams = $req->all(); // $this->arrRecordsPatchParameters['_strTable'] = $allParams['strTable']; // 如果是JSON格式请求体 // $this->arrRecordsPatchParameters['_strTable'] = $req->json('strTable'); // some code }
3. 确认Postman请求配置正确
- 请求方法选择
PATCH - 请求体(Body)选择
form-data或x-www-form-urlencoded,正确填写strTable参数 - 如果使用JSON格式请求体,需在Headers中设置
Content-Type: application/json,并在Body的raw区域填写合法JSON字符串(例如{"strTable": "你的目标表名"})
内容的提问来源于stack exchange,提问作者Jorge Mauricio
相关产品推荐
相关产品推荐

