如何使用SharePoint REST API创建网页?求对应API接口
没问题!你之前搞定了文件夹创建和文件上传,现在要创建网页的话,SharePoint确实有对应的REST API,只不过和文档库的接口不一样,分现代Site Page和经典Wiki Page两种常见场景,我给你详细拆解:
一、创建现代Site Page(适用于SharePoint Online/2019及以上版本)
现代站点的页面用这个端点最方便,专门针对Site Pages库设计:
- 请求方法:
POST - API端点:
/_api/sitepages/pages - 必须携带的请求头:
Accept: application/json;odata=verboseContent-Type: application/json;odata=verboseX-RequestDigest: <你的请求摘要值>(这个要先从/_api/contextinfo获取,用来防止CSRF攻击)
- 请求体示例(直接复制修改就能用):
{ "__metadata": { "type": "SP.Publishing.SitePage" }, "Title": "我的第一个现代页面", "PageLayoutType": "Article", // 可选值还有Home、SingleWebPartAppPage等 "Content": "{\"blocks\":[{\"type\":\"text\",\"text\":\"这是页面的核心内容,支持JSON格式的富文本区块\"}]}", "BannerImageUrl": "/sites/你的站点名/SiteAssets/页面横幅.jpg" // 可选,不需要可以删掉这行 }
小技巧:如果需要复杂的页面内容,先手动创建一个现代页面,然后用
GET /_api/sitepages/pages(<页面ID>)请求获取它的Content字段,照着结构改就行,比自己写方便多了。
二、创建经典Wiki Page(兼容所有SharePoint版本)
如果你的站点是经典模式,或者需要创建传统的Wiki页面,就用这个文件上传的变种接口:
- 请求方法:
POST - API端点:
/_api/web/getfolderbyserverrelativeurl('SitePages')/files/add(url='MyWikiPage.aspx', overwrite=false) - 请求头和上面一样,需要
X-RequestDigest、Accept和Content-Type - 请求体是页面的HTML内容,示例如下:
<%@ Page Inherits="Microsoft.SharePoint.WebPartPages.WebPartPage, Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <WebPartPages:WebPartPage runat="server" Title="我的经典Wiki页面" PageType="Wiki"> <WebPartPages:WikiContent runat="server"> <h1>欢迎来到我的Wiki页面</h1> <p>这里可以写任意HTML格式的内容</p> </WebPartPages:WikiContent> </WebPartPages:WebPartPage>
注意:
overwrite=false表示如果同名页面已存在就不覆盖,改成true可以强制覆盖。
三、几个关键提醒
- 权限一定要够:确保你的账户或应用有站点的编辑权限以上,不然会返回403错误。
- 请求摘要别忘拿:所有POST请求都需要这个,调用
/_api/contextinfo的POST请求就能拿到FormDigestValue字段。 - 测试建议:先在Postman或者类似工具里调试通API,再集成到你的代码里,这样更容易排查问题。
内容的提问来源于stack exchange,提问作者Prathyush Peettayil
相关产品推荐
相关产品推荐

