gpt4 book ai didi

java - 根据查询参数过滤 API 响应 json 输出

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:49:40 27 4
gpt4 key购买 nike

我正在使用 Spring Data JPA 和 Spring Data Rest 将我的 JPA 实体公开为 Web 服务。我的实体有数百个属性,并且与其他也有数百个属性的实体存在 oneTo(very)Many 关系。

我希望用户能够传入一个查询参数,使他们能够仅取回他们关心的 JSON 响应主体的字段。过去我曾使用过 IBM 的 Rational Team Concert REST API,它们允许调用者传入 XPath 查询以选择他们想要返回的字段。他们的 XPath 集成还允许调用者在各个字段上应用过滤逻辑。例如,使用该 API 可以实现以下功能:

workitem/workItem[creator/name='Bob Sacremento' or owner/name='Bob Sacremento']/(id|summary)

^以上查询将返回其所有者或创建者的名称等于 Bob Sacremento 的所有 workItem 元素的 ID 和摘要字段。

workitem/workItem/(id|summary|comments[creator/name='Bob Sacremento']/content)

^上述查询将返回所有workItem 元素的id、summary 和comment 内容字段。但它只会显示 Bob Sacremento 创建的评论。

我想用我的 API 做一些类似的事情。在我为此编写自己的 Controller 之前,我想我会问是否有一个框架可以开箱即用地提供此功能。 Spring Data REST 似乎没有。

最佳答案

您可以使用 Spring Data REST 定义已知投影,这可用于创建端点,这些端点在您的基础模型上公开特定投影和/或允许调用者请求已知(预定义)投影通过 URI 例如foo/bar/bas?projection=summary

更多详情在 Spring Data REST docs .

但是,我不知道有一个库可以与 Spring Data REST、JPA 集成并允许调用者指定投影(例如以 SQL 式 SELECT 语句的形式),然后即时应用这些投影代表您。

我怀疑您需要在 Controller 中定义一个查询参数,例如 select=a,b,c,然后使用提供的值通过 Spring Data JPA 应用投影。

关于java - 根据查询参数过滤 API 响应 json 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45807891/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com