使用附加数据扩展 ApiPlatforms GetCollection 操作 JsonLd 响应

问题描述 投票:0回答:1

Symfony 6、Api 平台 3、Php 8

我有 Symfony-Doctrine 实体,已使用 Api-Platform 的

ApiResource
注释进行注释,并且我正在使用
GetCollection
操作,该操作执行其设计目的。

假设这个实体是一个存储法定交易的模型。此示例的主要字段是金额(浮点型)和日期(日期时间)。

在用户界面中,有这些交易的分页表,它与 Api 平台提供的所有功能配合得很好。

我有一个要求,当设置了一定的日期范围时,交易列表应该显示附加信息:在本例中是查询期间所有交易的总和。我正在使用 Api 平台的内置过滤器。

我的问题是:有没有人找到一种方法来使用附加数据扩展 Api 平台的

GetCollection
JsonLd 响应? 我已经使用单独且指定的 API 端点实现了此用户界面功能,该端点仅返回提交的过滤器(日期范围)的总数,但我更愿意将这两个 API 端点结合起来。

我尝试过 Api-Platform 的 DataProviders 和 Dtos,但没有成功。

我试图找到 ApiPlatforms DataProvider 构建 Doctrine DQL 查询的地方。我的想法是克隆它,修改它(保留设置过滤器 WHERE 语句)并将结果添加到 JsonLD 集合和分页数据旁边。

php symfony api-platform.com json-ld
1个回答
0
投票

有多种方法可以满足您的需求。理想的解决方案取决于您的具体要求。

例如

  • 装饰 json ld 标准化器以将任意数据添加到响应中
  • 装饰 Hydra 标准化器以添加响应元数据
  • 添加事件订阅者以将其他数据添加到您的模型中
  • 重新设计您的 API 资源,例如使用子资源和序列化器组来嵌入关联
  • 创建学说查询扩展
  • 创建自定义操作(不真正推荐)
  • 等等

根据您的具体需求,还有其他几个选项。几乎任何用例都有很多示例https://api-platform.com/docs/core/

© www.soinside.com 2019 - 2024. All rights reserved.