実現したいこと
POSTリクエストで、フロント側から受け取ったJSON形式のデータをDBに保存したいです。
発生している問題・分からないこと
POSTリクエストを送信すると、LaravelのバージョンがJSON形式で返ってくる
Postmanで、body内にJSON形式のデータを入力、header内にContent-Typeをapplication/jsonと設定して、POSTリクエストを送信しました。
※laravel.logに出力されたログ
※定義した配列はddメソッドが動作しているか確認するために記述しています。
※GETリクエストの結果
※POSTリクエストの結果
エラーメッセージ
error
1local.ERROR: Debugbar exception: Attempt to read property "cookies" on null
該当のソースコード
Laravel
1<-- api.php --> 2Route::post('/{productId}/reviews', [\App\Http\Controllers\Api\V1\ReviewsController::class, 'store']); 3 4<-- Controller --> 5public function store(ReviewsRequest $request, int $productId) 6 { 7 $reviewData = $request->validatedData(); 8 $response = $this->reviewService->saveReviewByProductId($reviewData); 9 10 return response()->json($response, 201); 11 } 12 13<-- Service --> 14 public function saveReviewByProductId(array $reviewsData, $productId) 15 { 16 return $this->reviewRepository->saveReview($reviewsData, $productId); 17 } 18 19<-- Repository --> 20 public function saveReview(array $reviewData, int $productId): Review 21 { 22 return DB::transaction(function () use ($reviewData, $productId) { 23 try { 24 return $this->review::where('product_id', $productId)->create($reviewData); 25 } catch (\Exception $e) { 26 DB::rollBack(); 27 throw new \Exception("Failed to save review: " . $e->getMessage()); 28 } 29 }); 30 }
試したこと・調べたこと
上記の詳細・結果
local.ERROR: Debugbar exception: Attempt to read property "cookies" on null
上記で検索して、middlewareに問題があると認識しました。
storeメソッド内のddメソッドでrequestの値を確認しようとしましたが、dd自体が処理されていません。
補足
PHP 8.2.14
Laravel 9.52.16
パッケージ管理ツール:Composer
運用環境:Ubuntu, Docker
コンテナ:
meilisearch-1 (Exited)
mysql-1 (Running)
mailpit-1 (Running)
laravel.test-1 (Running)
redis-1 (Running)
selenium-1 (Running)
front-1 (Running)
0 コメント