api-platform-serialization について
Symfony 向けの API Platform シリアライズ設定スキルです。操作ごとのフィールドグループや関連リソースの表現、計算フィールドに加え、深さ制限や機密情報の非表示も扱います。
主な機能
- 01操作ごとのシリアライズグループ
- 02IRI と埋め込みの関連リソース制御
- 03計算フィールドとロール別フィールド
- 04プロパティ単位の正規化オプション
- 05循環参照の防止と機密情報の非表示
活用シーン
- 01一覧と読み取り操作で異なるフィールドを公開
- 02関連リソースを埋め込むか制御
- 03カスタム正規化器なしで日付形式を設定
- 04エンティティを整理したまま計算フィールドを追加
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ dev-toolings/ superpowers-symfony --skill api-platform-serializationインストール後、Claude Code で/api-platform-serializationを入力して読み込まれたか確認します。
同梱ファイルreference.md
詳細
Api Platform Serialization(Symfony)
使用する場面
- オペレーションごとに異なるフィールド(一覧、読み取り、作成、更新)を公開する必要がある場合。
- 関連リソースを IRI として表示するか、埋め込み表示する必要がある場合。
- 計算フィールドやロールに応じたフィールドをレスポンスに含める必要がある場合。
- 日付形式などのノーマライザーオプションをプロパティに設定する必要がある場合。
デフォルトのワークフロー
- グループに
entity:operationという名前を付け、オペレーションごとにnormalizationContextとdenormalizationContextを設定します。 - 古い
Annotationではなく、Serializer のAttribute名前空間にある#[Groups]でプロパティを指定します。 #[ApiProperty(readableLink: false, writableLink: false)]を使ってリレーションを制御し、IRI を強制します。- ノーマライザーを作成する代わりに、
#[Context]でプロパティごとのオプションを適用します。 - カスタムノーマライザーに計算フィールドを追加し、
api_platform.serializer.context_builderのデコレーターに動的なグループを追加します。 #[MaxDepth]とenable_max_depthで循環を防ぎ、#[Ignore]で機密情報を隠します。
ガードレール
- 読み取り用と書き込み用のグループを分けます。たとえば、
passwordは作成グループのみに、idは読み取りグループのみに含めます。 - 関連リソースは、親と同じグループを共有する場合にのみ埋め込み表示され、それ以外の場合は IRI として表示されます。
- コンテキストで
enable_max_depthがtrueでない限り、#[MaxDepth]は効果がありません。 - エンティティをシンプルに保ちます。計算フィールドはノーマライザーに追加します。
段階的な情報開示
- 実行時の方針とリスク制御には、このファイルを使用します。
- 実装の詳細が必要な場合は、リファレンスを開きます。
出力要件
- フィールドマトリクスとして、オペレーションごとのグループとコンテキストを示します。
- 追加したノーマライザーまたはコンテキストビルダーと、その登録方法を示します。
- 結果のフィールドを示すテストまたは OpenAPI 出力を提示します。
リファレンス
reference.md
コメント
Markdown 対応