Php 使用group by时结构化api URL

Php 使用group by时结构化api URL,php,api,rest,url,Php,Api,Rest,Url,我有两个实体:渠道和线索。一个频道有很多线索。 我需要画一个条形图与渠道和多少线索,他们有。例如,“Facebook:1000条线索,Twitter:500条线索等等” 我想使用某种api获取数据(因为我会有很多不同的图表) 什么是restful方式来构造url/api/channels返回所有频道,/api/channels/5/leads返回id=5的频道的leads。但是如果我需要检索分组数据呢?例如,具有频道名称和leads num的阵列列表。我猜/api/channels/leadSt

我有两个实体:渠道和线索。一个频道有很多线索。 我需要画一个条形图与渠道和多少线索,他们有。例如,“Facebook:1000条线索,Twitter:500条线索等等”

我想使用某种api获取数据(因为我会有很多不同的图表)


什么是restful方式来构造url
/api/channels
返回所有频道,
/api/channels/5/leads
返回id=5的频道的leads。但是如果我需要检索分组数据呢?例如,具有频道名称和leads num的阵列列表。我猜
/api/channels/leadStats
不被视为最佳实践

一个应用程序应具有一个有界上下文。这意味着您的导航或搜索应该从应用程序上下文中的一种实体类型开始,而不是从多种方式开始。你可以把“通道”作为你的有界上下文或“引导”,作为你的服务上下文。如果把“通道”作为有界上下文,那么所有的检索都应该从通道开始。
/channels
/channels/{id}
/channels/{id}/leads
/channels/{id}/leads/{id}

因此,为了回答您的问题,我认为第一个url“/频道”可以解决您的问题。它将返回所有频道,每个频道都有潜在客户列表。您可以在客户端进行必要的计算,以检索生成所需报告所需的数据。

因此,您建议在客户端进行计算,对吗?好的,但我还有一个问题:首先我打电话/频道以获取频道列表。然后我需要找到所有渠道的线索。我可以在/channels请求中将lead作为“子实体”包含,因此每个json数组将包含lead数组。但问题是,如果每个通道都有10k的潜在客户,那么/channels请求将有相当大的响应,有时我不需要所有的数据。如果我只返回基本信息,没有潜在客户,那么我需要为每个频道(频道/5/潜在客户)发出多个请求-似乎不太好,那么我想到了什么:/channels?includeLeads=1表示完整信息,当我需要绘制图表和/频道时,没有includeLeads表示基本信息。然而,我对客户端的计算有点困惑,因为SQL查询看起来比在javascript中分组数据容易得多。也许另一个解决方案是在/channels响应中返回leadsum?我可以在这里建议避免/channel的大尺寸响应,而不是保留所有leads细节,只要保留id或ref就可以获得线索。我认为基本规则是RESTAPI将以通用结构向您提供数据,您的js/mobile/web应用程序将以自己的方式使用这些数据。如果您发现很难从/channel操作该数据,请在REST api中添加一个新点,该点将按照您提到的方式提供数据,或者尝试在/channel的响应中添加您需要的其他数据。