使用ObjectMarshaller返回RESTful分页列表

时间:2013-07-05 17:37:50

标签: rest grails

我想在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,另一个接受简单列表。这是最好的方法吗?

在做类似的事情时是否有任何资源?我不敢相信我是第一个有此要求的人。

感谢您的帮助, 大卫

0 个答案:

没有答案