mksafi
(M.K.)
1
我从我的应用程序向 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 调用,它与我从应用程序发出的调用非常相似,唯一的例外可能是身份验证方法。
不确定发生了什么,有什么想法吗?
pfaffman
(Jay Pfaffman)
2
我没有发现明显的问题。您是通过遵循如何逆向工程 Discourse API 来获得这个结果的吗?如果我在电脑旁,我也会这样做来提供帮助。
1 个赞
mksafi
(M.K.)
3
锁定帖子的 API 在此处文档化:Discourse API Docs Discourse 客户端如何实现它,并且它看起来与我的应用程序中的实现方式非常相似。
1 个赞
RGJ
(Richard - Communiteq)
4
该代码是
params[:locked] === \"true\" ? locker.lock : locker.unlock
这似乎是在做一个字符串比较。
这意味着您需要发送 \"locked\": \"true\" 而不是 \"locked\": true,并且文档或代码需要更新以反映或更改此行为。
浏览器不发送 JSON 请求,它发送 Content-Type: application/x-www-form-urlencoded,它会将参数解释为字符串,这就是它在浏览器中有效的原因。
2 个赞
system
(system)
关闭
6
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.