Criar página do site via REST API
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
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");
}
});
}
Crie o modelo de uma "entrada moderna" no SharePoint. Siga este guia para fazer isso.
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)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