Confluence REST API 更新页面

Confluence REST API Update a Page

这是我更新现有页面的代码。 JSON 中的变量不是问题,因为我可以使用此 JSON 创建页面而不会出现任何问题。

string json = "{\"type\":\"page\",\"title\":\"" + "Tabelle " + table.Name + "\",\"space\":{\"key\":\"PROG\"},\"ancestors\":[{\"id\":120179837}],\"body\":{\"storage\":{\"value\":\"" + WARNING + table.BasisInfosHtmlString + table.TableStructurHtmlString + table.DependentTablesHtmlString + table.ReferencedInHtmlString + "\",\"representation\":\"storage\"}}}";
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = Client.PutAsync(@"/rest/api/content", content);

如果我 运行 这个,我得到服务器错误 405。不知道为什么,因为我可以使用 POST 方法轻松地创建一个页面。

我自己没有托管 API IIS。

如果您托管 API iis 可能会出于多种原因阻止 Put 动词(实际上 WebDav 可能是根本原因)

勾选这个linkASP.NET Web API - PUT & DELETE Verbs Not Allowed - IIS 8

您需要将内容 ID 放入 URL 以更新现有页面:PUT /rest/api/content/{contentId}.

var response = Client.PutAsync(@"/rest/api/content/{contentId}", content);

参考:https://docs.atlassian.com/confluence/REST/latest/#content-update

这是代码,可以完美地更新页面。感谢 mtheriault 的回答!

string json = "{\"version\":{\"number\":2},\"type\":\"page\",\"title\":\"" + "Tabelle " + table.Name + "\",\"ancestors\":[{\"id\":120179837}],\"body\":{\"storage\":{\"value\":\"" + WARNING + table.BasisInfosHtmlString + table.TableStructurHtmlString + table.DependentTablesHtmlString + table.ReferencedInHtmlString + "\",\"representation\":\"storage\"}}}";
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = Client.PutAsync(@"/rest/api/content/" + pageid, content);

如前所述,我必须增加版本号,还必须将 pageid 放入 Uri。