all() は、Laravel RESTFUL アプリケーションの Postman から送信されたフォームデータを含む PATCH および PUT リクエストに対して空の配列を返しますか? " />
Postman から送信されたフォームデータに関する HTTP PATCH および PUT リクエストで問題が発生する
Laravel RESTFUL アプリケーションでは、ユーザーが PATCH または PUT を利用しようとすると課題に直面します。 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 内での調整が必要です。
例:
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 の問題が解決されます。ただし、このメソッドは POST 操作と PUT 操作の両方に POST を使用するため、RESTFUL の原則からわずかに逸脱していることに注意することが重要です。
以上がLaravel RESTFUL アプリケーションで Postman から送信されたフォームデータを含む PATCH および PUT リクエストに対して $request->all() が空の配列を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。