在线共享点中的批量休息呼叫

batch rest call in sharepoint online

我正在尝试了解批处理休息调用的工作原理。

我在互联网上找不到任何简单的例子。我从 https://github.com/andrewconnell/sp-o365-rest 中找到了示例,但找不到 运行 这些示例,或者我还不知道如何找到。我猜您必须将应用程序部署到共享点站点。

鉴于此,我只是在 bulk/batch 中寻找添加列表项和更新列表项的最简单示例。另外,如果有人知道我如何制作从 git 到 运行 的应用程序,我们将不胜感激。

谢谢。

github项目是插件项目,需要先部署插件项目,然后才能使用。

您可以查看来自 here.

的以下脚本

我的测试结果在this thread

(function () {
    jQuery(document).ready(function () {
       jQuery("#btnFetchEmployees").click(function () {
            addEmployees();
        });
    });
})();
function addEmployees() {
    var employeesAsJson = undefined;
    employeesAsJson = [
            {
                __metadata: {
                    type: 'SP.Data.EmployeeInfoListItem'
                },
                Title: 'Geetanjali',
                LastName: 'Arora',
                Technology: 'SharePoint'
            },
            {
                __metadata: {
                    type: 'SP.Data.EmployeeInfoListItem'
                },
                Title: 'Geetika',
                LastName: 'Arora',
                Technology: 'Graphics'
            },
            {
                __metadata: {
                    type: 'SP.Data.EmployeeInfoListItem'
                },
                Title: 'Ashish',
                LastName: 'Brajesh',
                Technology: 'Oracle'
            }
    ];

    addEmployeeInfoBatchRequest(employeesAsJson);
}

function generateUUID() {
    var d = new Date().getTime();
    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
        var r = (d + Math.random() * 16) % 16 | 0;
        d = Math.floor(d / 16);
        return (c == 'x' ? r : (r & 0x7 | 0x8)).toString(16);
    });
    return uuid;
};

function addEmployeeInfoBatchRequest(employeesAsJson) {
    // generate a batch boundary
    var batchGuid = generateUUID();
    // creating the body
    var batchContents = new Array();
    var changeSetId = generateUUID();
    // get current host
    var temp = document.createElement('a');
    temp.href = _spPageContextInfo.webAbsoluteUrl;
    var host = temp.hostname;
    // iterate through each employee
    for (var employeeIndex = 0; employeeIndex < employeesAsJson.length; employeeIndex++) {

        var employee = employeesAsJson[employeeIndex];

        // create the request endpoint
        var endpoint = _spPageContextInfo.webAbsoluteUrl
                       + '/_api/web/lists/getbytitle(\'EmployeeInfo\')'
                       + '/items';

        // create the changeset
        batchContents.push('--changeset_' + changeSetId);
        batchContents.push('Content-Type: application/http');
        batchContents.push('Content-Transfer-Encoding: binary');
        batchContents.push('');
        batchContents.push('POST ' + endpoint + ' HTTP/1.1');
        batchContents.push('Content-Type: application/json;odata=verbose');
        batchContents.push('');
        batchContents.push(JSON.stringify(employee));
        batchContents.push('');
    }
    // END changeset to create data
    batchContents.push('--changeset_' + changeSetId + '--');


    // batch body
    var batchBody = batchContents.join('\r\n');

    batchContents = new Array();

    // create batch for creating items
    batchContents.push('--batch_' + batchGuid);
    batchContents.push('Content-Type: multipart/mixed; boundary="changeset_' + changeSetId + '"');
    batchContents.push('Content-Length: ' + batchBody.length);
    batchContents.push('Content-Transfer-Encoding: binary');
    batchContents.push('');
    batchContents.push(batchBody);
    batchContents.push('');

    // create request in batch to get all items after all are created
    endpoint = _spPageContextInfo.webAbsoluteUrl
                  + '/_api/web/lists/getbytitle(\'EmployeeInfo\')'
                  + '/items?$orderby=Title';


    batchContents.push('--batch_' + batchGuid);
    batchContents.push('Content-Type: application/http');
    batchContents.push('Content-Transfer-Encoding: binary');
    batchContents.push('');
    batchContents.push('GET ' + endpoint + ' HTTP/1.1');
    batchContents.push('Accept: application/json;odata=verbose');
    batchContents.push('');

    batchContents.push('--batch_' + batchGuid + '--');

    batchBody = batchContents.join('\r\n');

    // create the request endpoint
    var endpoint = _spPageContextInfo.webAbsoluteUrl + '/_api/$batch';

       var batchRequestHeader = {
        'X-RequestDigest': jQuery("#__REQUESTDIGEST").val(),
        'Content-Type': 'multipart/mixed; boundary="batch_' + batchGuid + '"'
    };

    // create request
    jQuery.ajax({
        url: endpoint,
        type: 'POST',
        headers: batchRequestHeader,
        data: batchBody,
        success: function (response) {

            var responseInLines = response.split('\n');


        $("#tHead").append("<tr><th>First Name</th><th>Last Name</th><th>Technology</th></tr>");

            for (var currentLine = 0; currentLine < responseInLines.length; currentLine++) {
                try {

                    var tryParseJson = JSON.parse(responseInLines[currentLine]);

                    $.each(tryParseJson.d.results, function (index, item) {

                        $("#tBody").append("<tr><td>" + item.Title + "</td><td>" + item.LastName + "</td><td>" + item.Technology + "</td></tr>");

                    });


                } catch (e) {

                }
            }
        },
        fail: function (error) {

        }
    });
}