我正在使用 Discourse API 通过 PUT 更新帖子;更新已完成,但只有接受的 HTML 标签被解析。Markdown、BBCode 和表情符号未正确呈现。我正在使用 content type application/json 传递 PUT 请求,因为这实际上是一个 JSON 负载,并且是 PUT 请求唯一似乎被接受的内容类型,尽管文档说它是三个选项之一。
有人知道为什么通过 API 进行更新时渲染引擎无法解析这些内容吗?
我正在使用 Discourse API 通过 PUT 更新帖子;更新已完成,但只有接受的 HTML 标签被解析。Markdown、BBCode 和表情符号未正确呈现。我正在使用 content type application/json 传递 PUT 请求,因为这实际上是一个 JSON 负载,并且是 PUT 请求唯一似乎被接受的内容类型,尽管文档说它是三个选项之一。
有人知道为什么通过 API 进行更新时渲染引擎无法解析这些内容吗?
我会查看日志,并查看原始 Markdown 字段中有什么内容。
我在日志中没有看到任何错误,并且原始载荷与我在执行 PUT 请求的 cURL 请求中指定的完全一致。当我拉取该主题的 JSON 视图时,我看到这个:
<p><img src="https://global.discourse-cdn.com/standard10/uploads/wysterialane/original/1X/284fb6069edededf16b0830d468eaf03bc261616.webp" alt="mother of god shades GIF" data-base62-sha1="5KBSuBIpIj3xlACzeZINBKw7wEu" width="262" height="200" class="animated"></p><br>为什么这行不通? :face_with_symbols_over_mouth: <br>
其中的 GIF 是我放在 OP 中的,渲染引擎将其翻译成了 HTML,一切都很好。当我通过 API 添加 <br>为什么这行不通? :face_with_symbols_over_mouth: <br> 部分时,原始文本被发布了,但渲染引擎并没有对其做任何处理。这是预期的行为吗?我想一个解决方法是让我的服务来构建完整的 HTML 载荷并传递,这有点糟糕。
值得注意的是,我有一个单独的服务通过传入 webhook 发布到实时聊天线程,并且表情符号在聊天窗格中正确呈现。这似乎特定于 posts API。
我认为您在使用包装在 HTML 标签中的表情符号短代码时遇到的问题是预期行为。在 Discourse 的帖子编辑器中创建的帖子中可以重现此问题。例如,:face_with_symbols_over_mouth: 将在此段落中渲染为
。
如果我使用 p 标签创建段落,而不是依赖 Markdown 引擎来完成,则短代码将不会被渲染。例如:
<p>This sentence contains an emoji shortcode :face_with_symbols_over_mouth:</p>
This sentence contains an emoji shortcode :face_with_symbols_over_mouth:
通过 API 发布 Markdown 的问题似乎是可行的,但可能有点棘手。使用终端中的 curl,类似以下内容应该可以工作:
m="### this is a heading
This is a very short paragraph with some _emphasis_ on a word.
This is another paragraph with a :slight_smile: emoji
- this
- is
- an
- unordered
- list
Followed by another paragraph.
1) and
2) an
3) ordered
4) list"
curl -X POST "http://localhost:4200/posts.json" -H "Api-Key: $api_key" -H "Api-Username: simon" -F "title=Markdown test one" -F "category=6" -F "skip_validations=true" -F "raw=$m"
上面请求中的 skip_validations 参数只是为了防止在测试时出现“正文太短”或“标题重复”之类的错误。它绕过了许多站点设置(最小帖子长度、正文最小熵、最小主题标题长度等)。
我不确定 BBCode 的问题。您尝试渲染的 BBCode 标签在添加到您的 Discourse 站点的帖子编辑器时是否有效?