我想在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,然后您可以在必要时进入该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,另一个接受简单列表。这是最好的方法吗?
在做类似的事情时是否有任何资源?我不敢相信我是第一个有此要求的人。
感谢您的帮助, 大卫