Criar página do site via REST API

Aug 22 2020

Eu gostaria de criar uma página do site via API REST com meu próprio título e conteúdo. Até agora, tentei enviar uma solicitação POST, mas obtive um erro:

Para adicionar um item a uma biblioteca de documentos, use SPFileCollection.Add ()

POSTAR: <url>/_api/web/lists/GetByTitle('Site Pages')/Items

Corpo:

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

Pelo que entendi - primeiro preciso criar uma página do site (um arquivo) no SharePoint e depois modificá-la via REST. No entanto, meu requisito é criar a entrada inteira apenas por meio de REST.

Como isso pode ser feito?

Respostas

1 spDevAdmin Aug 22 2020 at 18:26

Este é um ótimo artigo que explica como fazer isso. Basicamente, ele cria um novo .aspxarquivo na biblioteca de páginas do site. Aqui está o código que eles usam (chamados de uma página na web de destino):

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. Crie o modelo de uma "entrada moderna" no SharePoint. Siga este guia para fazer isso.

  2. Crie uma nova página do site por meio da API REST usando esse modelo salvo. Basta copiá-lo da pasta de modelos para a pasta raiz dessa subpágina:/_api/Web/GetFileByServerRelativeUrl('<source_url>')/CopyTo(strnewurl='<target_url>',bOverwrite=false)

  3. Edite a página do site recém-criada como desejar (por exemplo, via REST API).

URLs de origem e destino:

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

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