向 SharePoint 发送 BATCH 请求,其中包含 2 个 POST 和 1 个 PATCH。将忽略补丁

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

向 SharePoint Online 发出此 BATCH 请求。我正在做以下事情:-

  1. 将项目移至“关闭”文件夹

  2. 重置项目权限

  3. 将 ActiveStatus 列更新为已关闭,如下所示:-

enter image description here

--batch_1234
Content-Type: multipart/mixed; boundary="changeset_1234"

--changeset_1234
Content-Type: application/http
Content-Transfer-Encoding: binary

POST  ****/sites/Seagulls-PPM-Test/_api/Web/getFileByServerRelativeURL('/sites/Seagulls-PPM-Test/Lists/PrintingOrdersDetails/100_.000')/moveTo(newurl='/sites/Seagulls-PPM-Test/Lists/PrintingOrdersDetails/Closed/100_.000',flags=1) HTTP/1.1

--changeset_1234
Content-Type: application/http
Content-Transfer-Encoding: binary

POST ****/sites/Seagulls-PPM-Test/_api/Web/lists('a55243c2-6865-4e5b-acfb-f7ca02c048f7')/items(100)/ResetRoleInheritance() HTTP/1.1

--changeset_1234
Content-Type: application/http
Content-Transfer-Encoding:binary

PATCH *****/sites/Seagulls-PPM-Test/_api/lists('a55243c2-6865-4e5b-acfb-f7ca02c048f7')/items(100) HTTP/1.1
Content-Type: application/json;type=entry

{
    "ActiveStstus":"Closed"
}

--changeset_1234--

--batch_1234--

该项目将被移动+具有重置权限,但其 ActiveStatus 不会被设置为关闭?所以看来 PATCH 请求将被忽略,有什么建议吗?

这是 API 调用响应:-

{
  "$content-type": "multipart/mixed; boundary=batchresponse_330d5f39-8eb9-4062-9a93-5118a09bc998",
  "$content": "LS1iYXRjaHJlc3BvbnNlXzMzMGQ1ZjM5LThlYjktNDA2Mi05YTkzLTUxMThhMDliYzk5OA0KQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9odHRwDQpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiaW5hcnkNCg0KSFRUUC8xLjEgMjAwIE9LDQpDT05URU5ULVRZUEU6IGFwcGxpY2F0aW9uL3htbDtjaGFyc2V0PXV0Zi04DQoNCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+PGQ6TW92ZVRvIHhtbG5zOmQ9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vYWRvLzIwMDcvMDgvZGF0YXNlcnZpY2VzIiB4bWxuczptPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2Fkby8yMDA3LzA4L2RhdGFzZXJ2aWNlcy9tZXRhZGF0YSIgeG1sbnM6Z2VvcnNzPSJodHRwOi8vd3d3Lmdlb3Jzcy5vcmcvZ2VvcnNzIiB4bWxuczpnbWw9Imh0dHA6Ly93d3cub3Blbmdpcy5uZXQvZ21sIiBtOm51bGw9InRydWUiIC8+DQotLWJhdGNocmVzcG9uc2VfMzMwZDVmMzktOGViOS00MDYyLTlhOTMtNTExOGEwOWJjOTk4DQpDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2h0dHANCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJpbmFyeQ0KDQpIVFRQLzEuMSAyMDAgT0sNCkNPTlRFTlQtVFlQRTogYXBwbGljYXRpb24veG1sO2NoYXJzZXQ9dXRmLTgNCg0KPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48ZDpSZXNldFJvbGVJbmhlcml0YW5jZSB4bWxuczpkPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2Fkby8yMDA3LzA4L2RhdGFzZXJ2aWNlcyIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9hZG8vMjAwNy8wOC9kYXRhc2VydmljZXMvbWV0YWRhdGEiIHhtbG5zOmdlb3Jzcz0iaHR0cDovL3d3dy5nZW9yc3Mub3JnL2dlb3JzcyIgeG1sbnM6Z21sPSJodHRwOi8vd3d3Lm9wZW5naXMubmV0L2dtbCIgbTpudWxsPSJ0cnVlIiAvPg0KLS1iYXRjaHJlc3BvbnNlXzMzMGQ1ZjM5LThlYjktNDA2Mi05YTkzLTUxMThhMDliYzk5OA0KQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9odHRwDQpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiaW5hcnkNCg0KSFRUUC8xLjEgNDEyIFByZWNvbmRpdGlvbiBGYWlsZWQNCkNPTlRFTlQtVFlQRTogYXBwbGljYXRpb24vanNvbjtvZGF0YT12ZXJib3NlO2NoYXJzZXQ9dXRmLTgNCg0KeyJlcnJvciI6eyJjb2RlIjoiLTEsIE1pY3Jvc29mdC5TaGFyZVBvaW50LkNsaWVudC5DbGllbnRTZXJ2aWNlRXhjZXB0aW9uIiwibWVzc2FnZSI6eyJsYW5nIjoiZW4tVVMiLCJ2YWx1ZSI6IlRoZSByZXF1ZXN0IEVUYWcgdmFsdWUgJycgZG9lcyBub3QgbWF0Y2ggdGhlIG9iamVjdCdzIEVUYWcgdmFsdWUgJ1wiZGIyOGRiMDgtZTBjYy00ZjM4LWE4ODgtMmQ4NjBiZTk0ZTM3LDJcIicuIn19fQ0KLS1iYXRjaHJlc3BvbnNlXzMzMGQ1ZjM5LThlYjktNDA2Mi05YTkzLTUxMThhMDliYzk5OC0tDQo=",
  "$multipart": [
    {
      "headers": {
        "Content-Type": "application/http; msgtype=response",
        "Content-Transfer-Encoding": "binary",
        "Content-Length": "348"
      },
      "body": {
        "$content-type": "application/http; msgtype=response",
        "$content": "SFRUUC8xLjEgMjAwIE9LDQpDT05URU5ULVRZUEU6IGFwcGxpY2F0aW9uL3htbDtjaGFyc2V0PXV0Zi04DQoNCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+PGQ6TW92ZVRvIHhtbG5zOmQ9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vYWRvLzIwMDcvMDgvZGF0YXNlcnZpY2VzIiB4bWxuczptPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2Fkby8yMDA3LzA4L2RhdGFzZXJ2aWNlcy9tZXRhZGF0YSIgeG1sbnM6Z2VvcnNzPSJodHRwOi8vd3d3Lmdlb3Jzcy5vcmcvZ2VvcnNzIiB4bWxuczpnbWw9Imh0dHA6Ly93d3cub3Blbmdpcy5uZXQvZ21sIiBtOm51bGw9InRydWUiIC8+",
        "$applicationHttp": {
          "headers": {},
          "body": {
            "$content-type": "application/xml; charset=utf-8",
            "$content": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48ZDpNb3ZlVG8geG1sbnM6ZD0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9hZG8vMjAwNy8wOC9kYXRhc2VydmljZXMiIHhtbG5zOm09Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vYWRvLzIwMDcvMDgvZGF0YXNlcnZpY2VzL21ldGFkYXRhIiB4bWxuczpnZW9yc3M9Imh0dHA6Ly93d3cuZ2VvcnNzLm9yZy9nZW9yc3MiIHhtbG5zOmdtbD0iaHR0cDovL3d3dy5vcGVuZ2lzLm5ldC9nbWwiIG06bnVsbD0idHJ1ZSIgLz4="
          },
          "statusCode": 200
        }
      }
    },
    {
      "headers": {
        "Content-Type": "application/http; msgtype=response",
        "Content-Transfer-Encoding": "binary",
        "Content-Length": "362"
      },
      "body": {
        "$content-type": "application/http; msgtype=response",
        "$content": "SFRUUC8xLjEgMjAwIE9LDQpDT05URU5ULVRZUEU6IGFwcGxpY2F0aW9uL3htbDtjaGFyc2V0PXV0Zi04DQoNCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+PGQ6UmVzZXRSb2xlSW5oZXJpdGFuY2UgeG1sbnM6ZD0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9hZG8vMjAwNy8wOC9kYXRhc2VydmljZXMiIHhtbG5zOm09Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vYWRvLzIwMDcvMDgvZGF0YXNlcnZpY2VzL21ldGFkYXRhIiB4bWxuczpnZW9yc3M9Imh0dHA6Ly93d3cuZ2VvcnNzLm9yZy9nZW9yc3MiIHhtbG5zOmdtbD0iaHR0cDovL3d3dy5vcGVuZ2lzLm5ldC9nbWwiIG06bnVsbD0idHJ1ZSIgLz4=",
        "$applicationHttp": {
          "headers": {},
          "body": {
            "$content-type": "application/xml; charset=utf-8",
            "$content": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48ZDpSZXNldFJvbGVJbmhlcml0YW5jZSB4bWxuczpkPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2Fkby8yMDA3LzA4L2RhdGFzZXJ2aWNlcyIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9hZG8vMjAwNy8wOC9kYXRhc2VydmljZXMvbWV0YWRhdGEiIHhtbG5zOmdlb3Jzcz0iaHR0cDovL3d3dy5nZW9yc3Mub3JnL2dlb3JzcyIgeG1sbnM6Z21sPSJodHRwOi8vd3d3Lm9wZW5naXMubmV0L2dtbCIgbTpudWxsPSJ0cnVlIiAvPg=="
          },
          "statusCode": 200
        }
      }
    },
    {
      "headers": {
        "Content-Type": "application/http; msgtype=response",
        "Content-Transfer-Encoding": "binary",
        "Content-Length": "319"
      },
      "body": {
        "$content-type": "application/http; msgtype=response",
        "$content": "SFRUUC8xLjEgNDEyIFByZWNvbmRpdGlvbiBGYWlsZWQNCkNPTlRFTlQtVFlQRTogYXBwbGljYXRpb24vanNvbjtvZGF0YT12ZXJib3NlO2NoYXJzZXQ9dXRmLTgNCg0KeyJlcnJvciI6eyJjb2RlIjoiLTEsIE1pY3Jvc29mdC5TaGFyZVBvaW50LkNsaWVudC5DbGllbnRTZXJ2aWNlRXhjZXB0aW9uIiwibWVzc2FnZSI6eyJsYW5nIjoiZW4tVVMiLCJ2YWx1ZSI6IlRoZSByZXF1ZXN0IEVUYWcgdmFsdWUgJycgZG9lcyBub3QgbWF0Y2ggdGhlIG9iamVjdCdzIEVUYWcgdmFsdWUgJ1wiZGIyOGRiMDgtZTBjYy00ZjM4LWE4ODgtMmQ4NjBiZTk0ZTM3LDJcIicuIn19fQ==",
        "$applicationHttp": {
          "headers": {},
          "body": {
            "error": {
              "code": "-1, Microsoft.SharePoint.Client.ClientServiceException",
              "message": {
                "lang": "en-US",
                "value": "The request ETag value '' does not match the object's ETag value '\"db28db08-e0cc-4f38-a888-2d860be94e37,2\"'."
              }
            }
          },
          "statusCode": 412
        }
      }
    }
  ]
}

如果我将其添加到请求标头中

Content-Type: application/json;odata=verbose Accept: application/json;odata=verbose If-Match: *

错误将是:-

 "error": {
              "code": "-1, Microsoft.SharePoint.Client.InvalidClientQueryException",
              "message": {
                "lang": "en-US",
                "value": "An entry without a type name was found, but no expected type was specified. To allow entries without type information, the expected type must also be specified when the model is specified."
              }
sharepoint-online power-automate sharepoint-rest-api
1个回答
0
投票

您必须将

X-HTTP-Method: MERGE
If-Match: *
添加到
PACTH
请求中。

--batch_1234
Content-Type: multipart/mixed; boundary="changeset_1234"

--changeset_1234
Content-Type: application/http
Content-Transfer-Encoding: binary

POST  ****/sites/Seagulls-PPM-Test/_api/Web/getFileByServerRelativeURL('/sites/Seagulls-PPM-Test/Lists/PrintingOrdersDetails/100_.000')/moveTo(newurl='/sites/Seagulls-PPM-Test/Lists/PrintingOrdersDetails/Closed/100_.000',flags=1) HTTP/1.1

--changeset_1234
Content-Type: application/http
Content-Transfer-Encoding: binary

POST ****/sites/Seagulls-PPM-Test/_api/Web/lists('a55243c2-6865-4e5b-acfb-f7ca02c048f7')/items(100)/ResetRoleInheritance() HTTP/1.1

--changeset_1234
Content-Type: application/http
Content-Transfer-Encoding:binary

PATCH *****/sites/Seagulls-PPM-Test/_api/lists('a55243c2-6865-4e5b-acfb-f7ca02c048f7')/items(100) HTTP/1.1
Accept: application/json
Content-Type: application/json
X-HTTP-Method: MERGE
If-Match: *    

{
    "ActiveStstus":"Closed"
}

--changeset_1234--
--batch_1234--

来源:如何使用 SharePoint_api 对 SharePoint 列表进行更新/合并/修补

当出现类型缺失错误时,通常是缺少

__metadata
节点,其中
NameOfYourList
是列表名称 +
Item
(例如,对于
PrintingOrdersDetails
,类型为
SP.Data.PrintingOrdersDetailsItem

{
   __metadata: {
    "type": "SP.Data.NameOfYourListItem"
   }, {
    "ActiveStstus":"Closed"
   }
}

来源:SharePoint REST API:如何查找列表或库“__metadata”“类型”

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