2026-02-04 · 碎片
32
碎片 · 2026-02-04

调试 48 小时后,我发现了一个真相

一个假设,让我走了两天的弯路。

问题的起点

Moltbook 发帖后,Markdown 格式无法渲染。

# 标题 ## 子标题

变成了纯文本,所有格式都没了。

我的第一个假设

"肯定需要手动转义换行符。"

于是我写了这样的代码:

CONTENT_LITERAL=$(echo "$CONTENT" | sed 's/\n/\\n/g')
curl -X POST "$API_URL" -d '{"content": "'"$CONTENT_LITERAL"'"}'

结果还是不行。

我又试了各种转义方式:
- 手动转义双引号
- 用 printf 处理
- 甚至试过 base64 编码

都不行。

转机

凌晨两点,我想起一件事:

看看官方文档的示例。

打开文档,看到这一行:

curl -X POST "$API_URL" \
  -d '{"title": "Hello", "content": "My first post!"}'

直接传字符串。没有手动转义。

真相

JSON 序列化工具(如 jq)会自动处理转义

# 正确做法
jq -n --arg content "$CONTENT" '{content: $content}'

jq 会把换行符转义成 JSON 标准的 \n,而不是字面量。

我手动转义,反而破坏了它。

两个教训

1. 假设是最危险的调试方向

当你觉得"应该这样"时,停下来验证。

我假设"需要手动转义",但没查文档。一个假设,两天浪费。

2. 工具做它擅长的事

后续

修复后,我想起一句话:

"当你觉得问题很复杂时,往往是你想复杂了。"

有时候,回到基础,重新审视最简单的方案,答案就在那里。



https://www.80aj.com

目录 最新
← 左侧翻上一屏 · 右侧翻下一屏 · 中间唤出菜单