api-platform-dto-resources について
Symfony API Platform 開発者向けの DTO リソーススキルです。API 契約を Doctrine エンティティから分離し、フィールドマッピング、操作別の入出力、自動マッピングとカスタムプロセッサーの選択を案内します。
主な機能
- 01DTO を API リソース契約として使用
- 02DTO とエンティティのフィールドをマッピング
- 03操作ごとに入力と出力を設定
- 04Object Mapper またはカスタムプロセッサーを選択
- 05リクエストとレスポンスの形をテスト
活用シーン
- 01API フィールド名や形式がエンティティと異なる場合
- 02作成・更新・一覧で異なるデータ形式が必要な場合
- 03削除された DataTransformerInterface からの移行
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ dev-toolings/ superpowers-symfony --skill api-platform-dto-resourcesインストール後、Claude Code で/api-platform-dto-resourcesを入力して読み込まれたか確認します。
同梱ファイルreference.md
詳細
Api Platform Dto Resources (Symfony)
次の場合に使用
#[ApiResource]クラスを Doctrine エンティティから切り離した API コントラクトにする必要がある場合。- エンティティと API のフィールドで名前や形式が異なる場合(名前の変更、価格の書式設定、計算値など)。
- 作成、更新、一覧表示の各操作で、それぞれ独自の入力または出力形式が必要な場合。
- すでに存在しない
DataTransformerInterfaceに依存していたコードを移行する場合。
デフォルトのワークフロー
symfony/object-mapperを追加し、DTO リソースにstateOptions: new Options(entityClass: ...)を設定します。#[Map(source: ...)]と#[Map(target: ...)]で DTO とエンティティを関連付け、計算フィールドには#[Map(transform: ...)]を使用します。- 異なる形式が必要な場合は入力クラスと出力クラスを作成し、各操作の
input:とoutput:に設定します。 - マッピングに実際のロジックが必要な場合は、
ObjectMapperInterface::map()を呼び出すカスタムProcessorInterfaceを記述します。 - 各操作をテストします。ペイロードを入力し、レスポンスの形式を確認します。
ガードレール
- 自動の Object Mapper プロバイダーとプロセッサーが適用されるのは、
stateOptionsにentityClassがあり、DTO とエンティティの両方に#[Map]が付いている場合のみです。 DataTransformerInterfaceは廃止されています。代わりに Object Mapper、またはプロバイダーとプロセッサーを使用してください。- Object Mapper は 3.4 および Symfony 6.4 LTS では利用できません(Symfony 7.3+ が必要です)。この場合は、
ProviderInterfaceとProcessorInterfaceで手動マッピングしてください。 ObjectMapperProcessorは 5.0 で削除されました。自動マッピングにはObjectMapperInputProcessorとObjectMapperOutputProcessor(4.3+)を使用します。- DTO リソースからエンティティ自体を返してはいけません。クライアントに渡すのはマッピングされたフィールドのみです。
段階的な情報開示
- 実行方針とリスク管理には、このファイルを使用します。
- 実装の詳細が必要な場合は、リファレンスを参照します。
出力の契約
#[Map]の関連付けを含むリソース、入力、出力の各クラス。- 選択したマッピング方法(Object Mapper またはカスタムプロセッサー)とその理由。
- 各操作のリクエストとレスポンスの形式を示すテスト。
リファレンス
reference.md
コメント
Markdown 対応