使用 REST 在 Confluence 中更新页面 API
Update a page in Confluence using REST API
这是我目前得到的,它创建了一个新的 Confluence 页面。它不会更新它。它还将其发布在根 space、TST
中,但我希望它在 TST/space1/subsection2/updateThisPage
.
中
curl -v -u admin:admin -X POST -H Content-Type: application/json -d "{\"id\":\"123456\",\"type\":\"page\",\"title\":\"new page\",\"space\":{\"key\":\"TST\",\"title\":\"updateThisPage\"},\"body\":{\"storage\":{\"value\":\"<p>This is the updated text for the new page</p>\",\"representation\":\"storage\"}},\"version\":{\"number\":3}}" http://localhost:8090/rest/api/content?spaceKey=TST&title=updateThisPage
这是我收到的错误消息
{"statusCode":400,"message":"A page with this title already exists: A page already exists with the title new page in the space with key TST"}
会不会是权限错误?我知道我无权删除。
尝试使用 PUT 而不是 POST。
curl -v -u admin:admin -X PUT -H Content-Type: application/json -d "{\"id\":\"123456\",\"type\":\"page\",\"title\":\"new page\",\"space\":{\"key\":\"TST\",\"title\":\"updateThisPage\"},\"body\":{\"storage\":{\"value\":\"<p>This is the updated text for the new page</p>\",\"representation\":\"storage\"}},\"version\":{\"number\":3}}" http://localhost:8090/rest/api/content?spaceKey=TST&title=updateThisPage
使用请求/rest/api/content/{id}。
这对我有用。
curl -u admin:admin -X PUT -H "Content-Type: application/json" -d "{\"id\":\"26738701\",\"type\":\"page\",\"title\":\"new page\",\"space\":{\"key\":\"RO\"},\"body\":{\"storage\":{\"value\":\"<p>UPDATE This is a new page</p>\",\"representation\":\"storage\"}},\"version\":{\"number\":2}}" http://localost:10080/rest/api/content/26738701
JSON 负载:
{
"id":"26738701",
"type":"page",
"title":"new page",
"space":{
"key":"RO"
},
"body":{
"storage":{
"value":"<p>UPDATE This is a new page</p>",
"representation":"storage"
}
},
"version":{
"number":2
}
}
别忘了使用:
- 数据部分的内容 ID
- 数据部分的版本号
- PUT 请求
- 请求中的内容 ID
如果有人正在寻找 javascript 解决方案,这是我对另一个类似问题的回答
在这里你可以找到我在 confluence hackathon 上开发的工作代码
https://github.com/devex-web-frontend/dxWebPlugins/blob/master/src/confluence/helpers/buffer.js
这是我目前得到的,它创建了一个新的 Confluence 页面。它不会更新它。它还将其发布在根 space、TST
中,但我希望它在 TST/space1/subsection2/updateThisPage
.
curl -v -u admin:admin -X POST -H Content-Type: application/json -d "{\"id\":\"123456\",\"type\":\"page\",\"title\":\"new page\",\"space\":{\"key\":\"TST\",\"title\":\"updateThisPage\"},\"body\":{\"storage\":{\"value\":\"<p>This is the updated text for the new page</p>\",\"representation\":\"storage\"}},\"version\":{\"number\":3}}" http://localhost:8090/rest/api/content?spaceKey=TST&title=updateThisPage
这是我收到的错误消息
{"statusCode":400,"message":"A page with this title already exists: A page already exists with the title new page in the space with key TST"}
会不会是权限错误?我知道我无权删除。
尝试使用 PUT 而不是 POST。
curl -v -u admin:admin -X PUT -H Content-Type: application/json -d "{\"id\":\"123456\",\"type\":\"page\",\"title\":\"new page\",\"space\":{\"key\":\"TST\",\"title\":\"updateThisPage\"},\"body\":{\"storage\":{\"value\":\"<p>This is the updated text for the new page</p>\",\"representation\":\"storage\"}},\"version\":{\"number\":3}}" http://localhost:8090/rest/api/content?spaceKey=TST&title=updateThisPage
使用请求/rest/api/content/{id}。
这对我有用。
curl -u admin:admin -X PUT -H "Content-Type: application/json" -d "{\"id\":\"26738701\",\"type\":\"page\",\"title\":\"new page\",\"space\":{\"key\":\"RO\"},\"body\":{\"storage\":{\"value\":\"<p>UPDATE This is a new page</p>\",\"representation\":\"storage\"}},\"version\":{\"number\":2}}" http://localost:10080/rest/api/content/26738701
JSON 负载:
{
"id":"26738701",
"type":"page",
"title":"new page",
"space":{
"key":"RO"
},
"body":{
"storage":{
"value":"<p>UPDATE This is a new page</p>",
"representation":"storage"
}
},
"version":{
"number":2
}
}
别忘了使用:
- 数据部分的内容 ID
- 数据部分的版本号
- PUT 请求
- 请求中的内容 ID
如果有人正在寻找 javascript 解决方案,这是我对另一个类似问题的回答
在这里你可以找到我在 confluence hackathon 上开发的工作代码 https://github.com/devex-web-frontend/dxWebPlugins/blob/master/src/confluence/helpers/buffer.js