Facebook Graph API 批量请求过滤?
Facebook Graph API Batch Request Filtering?
问题:
我的批处理请求 returns 传递了组事件,而当前的批处理请求将随着用户创建未来事件而严重扩展。
我有以下批量请求:
{
"batch": [
{
"method": "GET",
"relative_url": "me"
},
{
"method": "GET",
"relative_url": "me/groups?fields=events{id,name,start_time}"
},
{
"method": "GET",
"relative_url": "me/accounts"
}
],
"include_headers": "false"
}
此请求将获取(除其他外)所有用户组事件。我只需要即将发生的事件。
问题:
如何在批处理请求中应用过滤器?
以下查询 URL 在用作 relative_url 时不起作用:
me/groups?fields=events{id,name,start_time}&since=1599036240
过滤器参数为:
since=MY_CURRENT_TIME
我阅读的文档没有太大帮助。我什至不知道是否可以向批处理请求添加过滤器(字段)。
( https://developers.facebook.com/docs/graph-api/making-multiple-requests/ )
我也在 FBs 开发论坛上问过同样的问题,但没有答案(到目前为止):
https://developers.facebook.com/community/threads/325616225418947/?notif_id=1599002283105969¬if_t=developer_community_forum_thread_update&ref=notif
更新 1(2020 年 9 月 2 日):
@CBroe 指出批处理请求 URLs 应该与独立请求一样工作。这让我相信我的 relative_url
没有正确过滤。测试:
me/groups?fields=events{id,name,start_time}&since=1599036240
输出:
events": {
"data": [
{
"id": "324058568947509",
"name": "Testing FB Graph API",
"start_time": "2020-08-25T15:00:00+0200"
}
],
符合过滤不适用于 &since=1599036240
和包含 {}
.
的 URL
这里的问题是提供参数的格式。
如果您直接通过 events
端点,则可以通过这种方式提供 since
参数:/group-id/events?since=…
但您没有使用该格式,您将通过 me/groups?fields=events
- 在这种情况下,将 since
指定为与 [=16= 相同“级别”的附加 GET 参数] 不行。
原因是您可以通过这种方式从多个端点请求数据 -
?fields=events,somethingelse&since=…
- 我们是否要通过此处的 since
值过滤 events
或 somethingelse
的结果,这会产生歧义。
所以,这里需要使用字段扩展语法:
?fields=events.since(1599036240){id,name,start_time}
这样,since
参数在此处明确绑定到 events
端点(您可以在此处为第二个端点指定不同的 somethingelse.since(…)
。)
(而且参数需要按这个顺序,events{id,name,start_time}.since(…)
会给出语法错误,字段列表首先是{…}
,然后查询解析器不理解点语法.)
问题: 我的批处理请求 returns 传递了组事件,而当前的批处理请求将随着用户创建未来事件而严重扩展。
我有以下批量请求:
{
"batch": [
{
"method": "GET",
"relative_url": "me"
},
{
"method": "GET",
"relative_url": "me/groups?fields=events{id,name,start_time}"
},
{
"method": "GET",
"relative_url": "me/accounts"
}
],
"include_headers": "false"
}
此请求将获取(除其他外)所有用户组事件。我只需要即将发生的事件。
问题: 如何在批处理请求中应用过滤器?
以下查询 URL 在用作 relative_url 时不起作用:
me/groups?fields=events{id,name,start_time}&since=1599036240
过滤器参数为:
since=MY_CURRENT_TIME
我阅读的文档没有太大帮助。我什至不知道是否可以向批处理请求添加过滤器(字段)。 ( https://developers.facebook.com/docs/graph-api/making-multiple-requests/ )
我也在 FBs 开发论坛上问过同样的问题,但没有答案(到目前为止): https://developers.facebook.com/community/threads/325616225418947/?notif_id=1599002283105969¬if_t=developer_community_forum_thread_update&ref=notif
更新 1(2020 年 9 月 2 日):
@CBroe 指出批处理请求 URLs 应该与独立请求一样工作。这让我相信我的 relative_url
没有正确过滤。测试:
me/groups?fields=events{id,name,start_time}&since=1599036240
输出:
events": {
"data": [
{
"id": "324058568947509",
"name": "Testing FB Graph API",
"start_time": "2020-08-25T15:00:00+0200"
}
],
符合过滤不适用于 &since=1599036240
和包含 {}
.
这里的问题是提供参数的格式。
如果您直接通过 events
端点,则可以通过这种方式提供 since
参数:/group-id/events?since=…
但您没有使用该格式,您将通过 me/groups?fields=events
- 在这种情况下,将 since
指定为与 [=16= 相同“级别”的附加 GET 参数] 不行。
原因是您可以通过这种方式从多个端点请求数据 -
?fields=events,somethingelse&since=…
- 我们是否要通过此处的 since
值过滤 events
或 somethingelse
的结果,这会产生歧义。
所以,这里需要使用字段扩展语法:
?fields=events.since(1599036240){id,name,start_time}
这样,since
参数在此处明确绑定到 events
端点(您可以在此处为第二个端点指定不同的 somethingelse.since(…)
。)
(而且参数需要按这个顺序,events{id,name,start_time}.since(…)
会给出语法错误,字段列表首先是{…}
,然后查询解析器不理解点语法.)