1

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

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

谢谢你的帮助,大卫

4

0 回答 0