上一篇文章我们提到了添加自定义的 Normalizer。这一篇将更加深入讨论自定义 Normalizer 的使用。
目前为止,我们所做的 Normalizer 只能老老实实按照我们的 Model 的结构序列化,我们最多只能通过 Serialize Group 的功能控制一下某些属性的隐显。但我们的接口可能需要提供 Model 结构外更多的信息,一个最常见的例子,提供 HATEOAS风格的接口的时候,你需要提供相关对象所对应的接口的地址,而这个地址往往是 Model 不会提供的(Model 层也不应该提供),举个例子,如果我们有一个 User 类,它具有 Groups 属性,正常序列化后的结果可能是这样:
// http://api.example.com/user/1 { "id": 1, "name": "chris", "groups: [ { "id": 1, "name": "PHP" } ]}
而 HATEOAS 过的结果,需要添加每一个 group 的 uri 信息:
// http://api.example.com/user/1 { "id": 1, "uri": "http://api.example.com/user/1" "name": "chris", "groups: [ { "id": 1, "uri