all() 在 Laravel RESTFUL 应用程序中为 PATCH 和 PUT 请求返回一个空数组,其中包含从 Postman 发送的表单数据? " />
HTTP PATCH 和 PUT 请求遇到 Postman 发送的表单数据问题
在 Laravel RESTFUL 应用程序中,用户在尝试使用 PATCH 或通过 Postman 发送带有表单数据的 PUT 请求。具体来说, $request->all() 方法返回一个空数组,从而阻止参数到达后端。
理解问题
对于 POST 请求,使用 form-data 时 $request->all() 可以正常运行,但是对于 PATCH 和 PUT,相同的方法无法检索从 Postman 传输的参数。 x-www-form-urlencoded,允许 $request->all() 访问所有 HTTP 方法(PATCH、PUT、POST)的参数。
解决问题
建议的解决方法是使用 POST 来更新模型,但此解决方案偏离了标准 RESTFUL API 实践,更合适的方法需要在 Postman 中进行调整:
示例:
邮差请求:
POST /testimonials/{testimonial} x-www-form-urlencoded _method=PUT
控制器方法:
<code class="php">public function update(Testimonial $testimonial, Request $request) { $testimonial->update($request->all()); }</code>
此方法允许将参数从 Postman 成功传输到后端,解决 PATCH 和 PUT 问题。但需要注意的是,这种方法稍微偏离了 RESTFUL 原则,使用 POST 进行 POST 和 PUT 操作。
以上是为什么 $request->all() 对于 Laravel RESTFUL 应用程序中从 Postman 发送的带有表单数据的 PATCH 和 PUT 请求返回一个空数组?的详细内容。更多信息请关注PHP中文网其他相关文章!