【问题标题】:How to get resource link for pagination in katharsis如何在 kathasis 中获取分页资源链接
【发布时间】:2016-09-15 14:11:37
【问题描述】:

我正在尝试进行分页。我有什么工作,但我对获取资源 URL 的方式有些怀疑。

在我的资源库中,我以惰性方式注入 ResourceRegistry(我知道这是一个循环依赖项)以获取我的资源的 URL,然后我使用它来生成我的链接。

  String resourceUrl = resourceRegistry.getResourceUrl(Book.class);

它工作正常,但循环依赖困扰着我。是否有一些静态类来获取资源 URL。或者也许有一种完全不同的方法来解决这个问题?

【问题讨论】:

  • kathasis 返回 json 时是否有遗漏的链接?您不需要自己创建任何链接。你见过@JsonApiToOneKatharsis docs 上的兄弟姐妹吗?
  • @sorrymissjackson 我说的是我想用于分页的顶级“链接”属性 - 请参阅jsonapi.org
  • 我明白了。你试过LinksRepository接口提供顶级LinksInformation吗?尽管该界面似乎无法帮助您检索网址。快速查看 kathasis 的序列化程序,我没有发现其他获取 URL 的方法(resourceRegistry.getResourceUrl 除外)。
  • 您是如何访问ResourceRegistry的?
  • @sorrymissjackson 我有一个服务类,我在其中自动装配 ResourceRegistry。然后该服务类在 ResourceRepository 中自动装配。 ResourceRegistry 需要以惰性方式自动装配,因为它是循环依赖。

标签: java katharsis


【解决方案1】:

也许这不是一个令人满意的答案,但 kathasis 确实会在其序列化程序中生成链接。您可能可以扩展 kathasis 的序列化程序之一,并使其了解可选的元信息,其中包含可用项目的总数,无论如何客户端都需要知道这些信息。根据这些数据,您可以为上一页和下一页创建顶级链接。在 kathasis 序列化程序中,resourceRegistryQueryParams 都将可用,其中包含原始分页参数。 不过这都是假设性的。

kathasis 开发人员建议的解决方案是:

@JsonApiFindAll
public JsonApiResponse findAll() {
    return new JsonApiResponse()
        .setEntity(Collections.singletonList(new Task(1L, "John")))
        .setLinksInformation(new LinksInformation() {
            public String self = "...";
            public String first = "...";
            public String prev = "...";
            public String next = "...";
            public String last = "...";
        });
}

取自这里:

不过,似乎需要手工制作链接。

【讨论】:

    猜你喜欢
    • 2019-09-05
    • 2021-12-08
    • 1970-01-01
    • 2016-12-17
    • 2023-03-29
    • 2016-10-07
    • 1970-01-01
    • 2019-01-03
    • 1970-01-01
    相关资源
    最近更新 更多