使用API无法锁定帖子

我从我的应用程序向 Discourse 发出了一些 API 调用,以修改帖子。

在第一次调用中,我编辑了帖子。这效果很好。在下一次调用中,我尝试锁定帖子。

我从 JavaScript 发出的帖子锁定调用如下所示:

fetch(`https://forum.hollowverse.com/posts/1817/locked.json`, {
  method: 'PUT',
  headers: {
    'Api-Key': process.env.DISCOURSE_SYSTEM_PRIVILEGE_SECRET,
    'content-type': 'application/json',
    'Api-Username': 'hollowbot',
  },
  body: JSON.stringify({locked: true}),
});

当我发出此调用时,Discourse 以 {locked: false} 回复我。

我尝试手动锁定帖子并检查 Discourse 客户端发出的 API 调用,它与我从应用程序发出的调用非常相似,唯一的例外可能是身份验证方法。

不确定发生了什么,有什么想法吗?

我没有发现明显的问题。您是通过遵循如何逆向工程 Discourse API 来获得这个结果的吗?如果我在电脑旁,我也会这样做来提供帮助。

1 个赞

锁定帖子的 API 在此处文档化:Discourse API Docs Discourse 客户端如何实现它,并且它看起来与我的应用程序中的实现方式非常相似。

1 个赞

代码

params[:locked] === \"true\" ? locker.lock : locker.unlock

这似乎是在做一个字符串比较。

这意味着您需要发送 \"locked\": \"true\" 而不是 \"locked\": true,并且文档或代码需要更新以反映或更改此行为。

浏览器不发送 JSON 请求,它发送 Content-Type: application/x-www-form-urlencoded,它会将参数解释为字符串,这就是它在浏览器中有效的原因。

2 个赞

谢谢你的帮助,Richard!

TIL!

我将研究为文档提交一个更新。

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.