【问题标题】:Calls to Office365 API to synchronize events, throttling调用 Office365 API 以同步事件、限制
【发布时间】:2017-11-03 19:42:16
【问题描述】:

我正在尝试将一些事件从 Outlook 同步到我的本地数据库,我调用 API 如下:

$url = 'https://outlook.office365.com/api/v2.0/users/' . $this->user . '/CalendarView/'
    . '?startDateTime=' . $start_datetime
    . '&endDateTime=' . $end_datetime

这为我提供了两个特定日期之间来自 Outlook 的所有事件。

然后我去使用下面的代码保存所有这些事件。它的问题是它一次只返回 10 个事件。

$http = new \Http_Curl();
        $http->set_headers( $this->get_headers() );
        $response = $http->get( $url );

        $data = array();

        $continue = true;
        while ( $continue ) {
            if ( isset($response->value) ) {
                $arr = array();

                foreach ( $response->value as $event ) {
                    $arr[] = $event;
                }

                $data = array_merge( $data, $arr );
            }

            $property = '@odata.nextLink';
            if ( isset( $response->$property ) ) {
                $url = $response->$property;
                $response = $http->get( $url );
            } else {
                $continue = false;
            }
        }

        unset( $http );

        return $data;

然后我尝试像下面那样调用 API,将顶部参数设置为 10,但我最终得到了许多空事件。

$url = 'https://outlook.office365.com/api/v2.0/users/' . $this->user . '/CalendarView/'
    . '?startDateTime=' . $start_datetime
    . '&endDateTime=' . $end_datetime
     .'&top=100'

我正在努力避免每分钟拨打超过 60 个电话。有没有什么办法可以先获取两个日期之间的事件数,然后全部取回,所以top参数其实应该是事件总数。

【问题讨论】:

  • 答案对你有用吗?
  • @Yogesh 是的,谢谢!

标签: php office365 office365api outlook-api


【解决方案1】:

正确的查询参数是$top 而不是top。请注意那里的$

http://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part2-url-conventions/odata-v4.0-errata03-os-part2-url-conventions-complete.html#_Toc453752362

5.1.5 系统查询选项 $top 和 $skip $top 系统查询选项请求将查询集合中的项目数包含在结果中。 $skip 查询选项请求查询集合中要跳过且不包含在结果中的项目数。客户端可以通过组合 $top 和 $skip 来请求特定页面的项目。 [OData-Protocol] 文档中介绍了 $top 和 $skip 的语义。 [OData-ABNF] top 和 skip 语法规则分别定义了 $top 和 $skip 查询选项的形式语法。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-05-18
  • 2018-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-10
  • 2019-01-31
相关资源
最近更新 更多