IT-Q

API Resource を使わずモデルをそのまま返すと、何が起きますか。

DBのスキーマとAPIの仕様が直結します。列名を変えただけでレスポンスが変わり、クライアントが壊れます。内部フラグやハッシュ済みパスワードも、指定を忘れた瞬間に露出します。

面接官が見ているのは分離の理由の補強。

これは「API のレスポンス設計として妥当なのはどれですか。」への追撃質問です。

よくある答えと、面談でどう見られるか

  • DB のスキーマ変更がそのまま API の仕様変更になり、隠すつもりの列も露出する
    その通りです。$hidden の指定を忘れた瞬間に、内部フラグやハッシュ済みパスワードが出ます。
  • レスポンスが遅くなる
    速度はほぼ変わりません。問題は契約と安全性です。
  • JSON に変換できない
    変換されます。されるからこそ問題になります。
  • リレーションが取得できない
    取得できます。むしろ意図せず一緒に出てしまうことが問題です。

面接官は何を見ているか

  • DBの列変更がそのままAPI仕様の変更になると言えた
  • 出したくない列が露出する危険を挙げた
  • クライアント側が壊れる可能性に触れた

模範解答

DBのスキーマとAPIの仕様が直結してしまいます。列名を変えただけでAPIのレスポンスが変わり、クライアント側が壊れます。内部管理用のフラグやハッシュ済みパスワードなど、出すつもりのない列も、$hidden の指定を忘れた瞬間に露出します。Resource を挟むのは、DBの都合とAPIの契約を切り離すためです。