alank
(Andrew Lank)
1
为了确认理解,Discourse API 文档提到了这种结构…
{
"post[raw]": "string",
"post[raw_old]": "string",
"post[edit_reason]": "string",
"post[cooked]": "string"
}
在我尝试之前,这是否意味着,或者说,这具体是什么意思?
是指 {post: {raw: ..., raw_old: ... }} 吗?
还是仅仅指 {raw: "", raw_old: ""...}?
另外,raw_old 是什么?文档仅说明每个元素都是我要 PUT 到 JSON 主体中的“字符串”。
我只是想在帖子顶部添加一行(该帖子最初是由一个机器人创建的),我们需要在其中添加一个指向另一个网站的链接。注意,我们的目标是将第一段显示在分类标题下方,或者在 cooked
元素中显示(该元素定义在分类标题正下方)。
希望这能说明清楚。如果不清楚,请让我澄清。
blake
(Blake Erickson)
2
我目前不太确定 raw_old 的用途,但你只需使用 raw 字段,它将会替换整个帖子。因此,在你的代码中,你可以先获取想要编辑的帖子,在顶部添加你的内容,然后使用 raw 字段更新帖子。
通过在你的网站上实时编辑帖子并检查浏览器调用,了解 Discourse 是如何实现的,可能会有所帮助:
discourse_api gem 也是通过这种方式实现的:
alank
(Andrew Lank)
3
我有个问题想确认一下:您指的是与 Discourse API Docs 中定义的文档不同的内容吗?这倒挺有意思……不过我目前只是依据 API 文档来操作的。
我的目标很简单:只需在分类名称下方添加一条评论和一个链接。我认为 Discourse 会从“关于……
alank
(Andrew Lank)
4
根据上述内容以及我的尝试,无法使用 API 文档中提到的 “cooked” 字段来更新帖子。不过,使用 “raw” 字段是可以实现的。我所有使用 “cooked” 的尝试都返回了错误,提示帖子无效,原因是内容少于 20 个字符,或者不是清晰的句子……
然而,使用 “raw” 字段还存在其他问题,我会在另一篇帖子中详细说明,因为这与当前问题没有直接关联。
感谢大家的支持。
在 API 文档 中存在一点出入:
文档中说明:使用 PUT /posts/{id}.json 并附带以下负载:
Content type: application/json
{
"post[raw]": "string",
"post[raw_old]": "string",
"post[edit_reason]": "string",
"post[cooked]": "string"
}
但实际上,该格式仅在 PUT /posts/{id} 且 Content-Type: application/x-www-form-urlencoded 时有效。
PUT /posts/{id}.json 的正确负载应为:
Content type: application/json
{
"post": {
"raw": "string",
"raw_old": "string",
"edit_reason": "string",
"cooked": "string"
}
}
只需提供 raw 参数即可替换整个帖子。
alank
(Andrew Lank)
7
是的,谢谢。我在尝试了几次 Postman 请求并自行测试后意识到了这一点……此外,在我的尝试中,“cooked” 似乎没有任何作用……而且我仍然不确定 “raw_old” 是什么。
simon
9