【问题标题】:Can I do bulk updates with the microsoft graph API? Specifically contacts我可以使用 microsoft graph API 进行批量更新吗?具体联系方式
【发布时间】:2018-07-17 16:42:58
【问题描述】:

我正在使用 microsoft graph php sdk 来操作用户的联系人。我可以对单个联系人进行 CRUD 操作,但我想弄清楚是否可以在一个请求中处理多个联系人。这适用于添加单个客户端:

 $graph=new Graph;
 $graph->setAccessToken($token);
 $graph->createRequest('POST', $url)
 ->attachBody($contact)
 ->setReturnType(Contact::class)
 ->execute();

我试过散装

 ->attachBody([$contact1, $contact2, $contact3]);

我得到 400 错误:

"code": "BadRequest",
"message": "Empty Payload. JSON content expected.",

我在尝试graph explorer 时遇到了同样的错误,使用此正文发布到
https://graph.microsoft.com/v1.0/me/contacts

[
  {
    "emailAddresses": [
      {
        "name": "John Doe",
        "address": "jdoe@example.com"
      }
    ],
    "givenName": "John"
  },
  {
    "emailAddresses": [
      {
        "name": "John Doe",
        "address": "jdoe@example.com"
      }
    ],
    "givenName": "John"
  }
]

有没有办法做到这一点,还是不支持?我在文档中都找不到任何提及。

有时我必须添加数千个联系人,而每个请求只添加 1 个似乎很乏味。

所有更新操作的问题都是一样的:发布、修补、删除。

【问题讨论】:

    标签: php microsoft-graph-api


    【解决方案1】:

    Microsoft Graph 有一个专门用于此类方案的 Batching feature。每个操作仍然针对单个记录,但批处理允许您进行一次调用以执行多达 20 个操作:

    {
      "requests": [
        {
          "id": "1",
          "method": "POST",
          "url": "/me/contacts",
          "headers":{
             "Content-Type":"application/json"
          },
          "body": {
            "emailAddresses": [
              {
                "name": "John Doe",
                "address": "jdoe@example.com"
              }
            ],
            "givenName": "John"
          }
        },
        {
            "id": "2",
            "method": "POST",
            "url": "/me/contacts",
            "headers":{
               "Content-Type":"application/json"
            },
            "body": {
              "emailAddresses": [
                {
                  "name": "John Doe",
                  "address": "jdoe@example.com"
                }
              ],
              "givenName": "John"
            }
          },
          {
            "id": "3",
            "method": "POST",
            "url": "/me/contacts",
            "headers":{
               "Content-Type":"application/json"
            },
            "body": {
              "emailAddresses": [
                {
                  "name": "John Doe",
                  "address": "jdoe@example.com"
                }
              ],
              "givenName": "John"
            }
          }
      ]
    }
    

    【讨论】:

    • 酷! 1)这是否暴露在任何地方的php sdk中?和 2) 20 限制记录在哪里?
    • 第二个nvm
    • 我不知道 SDK 中有任何特定的批处理功能(披露,我不是 PHP SDK 方面的专家)。也就是说,您应该能够像通过 SDK 发布任何其他有效负载一样发布此有效负载。
    • 我收到了错误 Write request id : 1 does not contain Content-Type header or body. 我自己的代码收到了这个错误,将您的示例直接粘贴到图形资源管理器时也收到了同样的错误。
    • 您需要在任何带有正文的请求中添加联系类型标头,以告诉它正文中的内容,因此在本例中为 Content-Type:application/json。添加后,它起作用了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多