我想在 grails 中使用自定义的 DomainClassMarshaller/ObjectMarshaller 类来获得一个不错的分页列表。
我希望完整的看起来像这样:
> GET /api/company/1/bookings
< 200 OK
{
"url": "/api/company/1/bookings",
"size": 42,
"pageSize": 10,
"nextPage": "/api/company/1/bookings/?page=2,
"prevPage": null,
"items": [
{ ... // booking 1
},
...
{ ... // booking 10
},
]
}
而如果域对象之间存在 has_a 关系,并且您获得了父对象,您将只获得 URL,然后您可以在必要时深入研究。
> GET /api/company/1
< 200 OK
{
"url": "/api/company/1"
...
"bookings": "/api/company/1/bookings"
}
但是,如果您遇到简单类型的列表,请继续输出它们:
> GET /api/user/1
< 200 OK
{
"url": "/api/user/1",
"name" "Bob,
"favoriteThings": [
"Raindrops on roses",
"Whiskers on kittens",
"Bright copper kettles",
"Warm woolen mittens"
]
}
DomainClassMarshaller 有一个非常不错的小方法,称为 asShortObject,它似乎可以解决问题。
我的第一个想法是注册一个仅接受域类列表的 DomainClassMarshaller,另一个接受简单列表的域类。这是最好的方法吗?
是否有任何资源可以做类似的事情?我不敢相信我是第一个有这个要求的人。
谢谢你的帮助,大卫