個人開発 | バックエンド

OVERVIEW

図書管理API

バックエンド開発はPHPを使用しています。フレームワークとしてlaravel10を使用し、図書管理ができるAPIを作りました。このAPIは会社や図書館などで保有している図書を管理する事を想定したAPIです。

基本のCRUD機能やマルチ認証機能など実装しました。その中で著者、図書、管理者、一般ユーザーの4つのテーブルのリレーションや、フロントからのリクエストに対するバリデーション、データ取得時のページネーション、部分検索機能、cascadeなども学びながら実装し開発をしました。

Laravel SailのDocker環境での開発で、DB管理にはMy SQLを使用しました。トークン認証にはsanctumを使用しました。

苦労した点は、ログイン中の管理者がデータを作成(更新)した際に作成されたデータのcreated_by(updated_by)カラムにその管理者のidを追加するという機能です。作成した時の処理はそのモデルで起きた特定のイベントごとにする処理をカスタマイズすることができるbootメソッドをModelの中に記述することで解決できたのですが、更新した時の処理がどうしてもできず。結局、Modelの中でnewEloquentBuilderというメソッドを使い、独自のクエリビルダを構築できるCustom Query Buildersという機能を使って解決しました。

この実装をするに至った理由は、管理するデータのテーブルと管理者のテーブルのリレーションができれば、作成するデータの種類やタイプによる管理者のグルーピングができたり、データの作成時間から管理者のアクティブな時間帯を確認できたりと実装可能な機能の幅が広がると考えたためです。

APIについてよくイメージがついていなかった状態から、APIとは?と質問されたら1時間は話せるレベルにはなりました。フロントでの開発を経て、APIのレスポンス形式などをフロント側の業務を想像しながら考えられるようになりました。

→ [https://github.com/HashimotoShuhei-z/BooksManageAPI]


WEBSITE