Создать страницу сайта через REST API

Aug 22 2020

Я хотел бы создать страницу сайта через REST API с моим собственным заголовком и контентом. Пока я пытался отправить запрос POST, но получил ошибку:

Чтобы добавить элемент в библиотеку документов, используйте SPFileCollection.Add ()

ПОСЛЕ: <url>/_api/web/lists/GetByTitle('Site Pages')/Items

Тело:

{
  "__metadata": {
    "type": "SP.Data.SitePagesItem"
  },
  "Title": "It's working?"
}

Насколько я понимаю, сначала мне нужно создать страницу сайта (файл) в SharePoint, а затем изменить ее через REST. Однако мое требование - создать всю запись только через REST.

Как это может быть сделано?

Ответы

1 spDevAdmin Aug 22 2020 at 18:26

Это отличная статья, объясняющая, как это сделать. По сути, он создает новый .aspxфайл в библиотеке страниц сайта. Вот код, который они используют (вызывается со страницы в целевой сети):

function CreateWikiPage() {

// Get Server relative url of Web(site)
var WebServerRelativeUrl = _spPageContextInfo.webServerRelativeUrl;

// Provide Internal name of the library here
var DocuentLibraryInternalName = "SitePages";

// Provide name of the wiki page to be created
var NewPageName = "NewRESTWikipage.aspx";

// Form relative url of the new page. This will be used in function below
var NewFileUrl = WebServerRelativeUrl + "/" + DocuentLibraryInternalName + "/" + NewPageName;

$.ajax({ // "templateFileType" values in below method // StandardPage. The value = 0. // WikiPage. The value = 1. // FormPage. The value = 2. url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/GetFolderByServerRelativeUrl('" + WebServerRelativeUrl + "/" + DocuentLibraryInternalName + "')/Files/AddTemplateFile(urlOfFile='" + NewFileUrl + "',templateFileType=1)", method: "POST", headers: { "accept": "application/json;odata=verbose", "content-type": "application/json;odata=verbose", "X-RequestDigest": $("#__REQUESTDIGEST").val()
    },
    success: function (data, status, xhr) {
        console.log("Success");
    },
    error: function (xhr, status, error) {
        console.log("Failed");
    }
});
}
Sokołow Aug 25 2020 at 15:05
  1. Создайте Шаблон «Современные записи» в SharePoint. Следуйте этому руководству, чтобы сделать это.

  2. Создайте новую страницу сайта через REST API, используя этот сохраненный шаблон. Просто скопируйте его из папки шаблона в корневую папку этой подстраницы:/_api/Web/GetFileByServerRelativeUrl('<source_url>')/CopyTo(strnewurl='<target_url>',bOverwrite=false)

  3. Отредактируйте эту недавно созданную страницу сайта по своему усмотрению (например, через REST API).

Исходный и целевой URL:

source_url - /sites/<your_site>/SitePages/Templates/Your-Template.aspx

target_url - /sites/<your_site>/SitePages/New-Modern-Page.aspx