前の記事では、カスタム ノーマライザーの追加について説明しました。この記事では、カスタム ノーマライザーの使用について詳しく説明します。
これまでのところ、私たちが作成したノーマライザーは、モデルの構造に従ってシリアル化することしかできず、Serialize Group 関数を通じて特定の属性の可視性を制御することしかできません。しかし、私たちのインターフェースはモデル構造の外側にさらなる情報を提供する必要があるかもしれません。最も一般的な例の 1 つは、HATEOAS スタイルのインターフェースを提供するときに、関連するオブジェクトに対応するインターフェースのアドレスを提供する必要があるのですが、このアドレスは多くの場合そうではありません。たとえば、Groups 属性を持つ User クラスがある場合、通常のシリアル化後の結果は次のようになります:
// http://api.example.com/user/1 { "id": 1, "name": "chris", "groups: [ { "id": 1, "name": "PHP" } ]}
HATEOAS の結果には、各グループの URI 情報を追加する必要があります:
// http://api.example.com/user/1 { "id": 1, "uri": "http://api.example.com/user/1" "name": "chris", "groups: [ { "id": 1, "uri