Laravel PHP プログラミング サーバサイド

Laravelでリクエスト、レスポンスのキーを自動で変換するミドルウェアを作成してみた

PHPとJavaScriptで扱うオブジェクトのキー名がスネーク、キャメルと異なる場合に

サーバサイドで変換するミドルウェアを作成したのでそれを紹介します。

背景

フロントサイドとサーバサイドを両方まとめて実装することがよくある。

そのときにフロントから送るリクエストボディのキー名がキャメルケースで、サーバサイドでそれをスネーク型に変換したりする。

それをコントローラのロジック内でわちゃわちゃするのは、個人的には好きではなく。

コントローラ外で共通化できるようなことをしたいなぁと思い、ミドルウェアでそれを実現することにしました。

前提

  • Laravelのミドルウェアについてある程度わかる

実装

ミドルウェアを作って、それを適用するだけ

ミドルウェア(CaseConverterMiddleware)を作成

app/Http/Middleware/CaseConverterMiddleware.php

_recursiceConvertで受けとった配列のキーをスネーク<=>キャメル変換をしています。

値が配列になっている場合もあるので、再起的に実行するようにしています。

app/Http/Kernel.phpにミドルウェアを登録

全てのAPIで適用したい場合は、$middlewareの中に

特定のAPIのグループに対して適用したい場合は、$middlewareGroupsの中に記述します。

今回は、特にグループを意識していないので$middlewareの中に入れます。

app/Http/Kernel.php

これで実装は完了です。

まとめ

  • フロントとサーバで渡すデータのキーの型が異なる要件は起こりうる
  • サーバでそれをうまく変換する場合はミドルウェアを通すと良い

 

-Laravel, PHP, プログラミング, サーバサイド

© 2023 Shiro's secret base