Skip to content

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 09:40
· 4 commits to main since this release

v0.2.0 — 请了一个 JSON 库来干活

第二个带手写发布说明的版本,也是第一个换了 JSON 实现的版本:
src/main.cpp 里 53 行自己写的 JSON 工具(转义 / 解析 / 数字格式化)全部删掉,
六个接口和三个 webview::bind 回调改成直接构造 JSON 对象。

本次改动

  • JSON 交给 nlohmann/json:删掉 json_escape、first_json_string、
    format_number,只留一个 json_text() 当唯一出口。/api/assets 那个
    「手写逗号分隔」的循环换成 push_back —— 这类代码最容易在「第一个元素前
    不加逗号」上出错,现在没得错了。
  • 两个可见的行为变化(这次发 minor 而不是 patch 就是因为它俩):
    • POST /api/add 返回 {"a":12.0,"b":30.0,"sum":42.0},不再是
      {"a":12,"b":30,"sum":42}。这三个值本来就是 double,JSON 库只是没替我们
      「猜」成整数;任何 JSON 解析器读到的数值都一样。
    • GET /api/info 多一个 "nlohmann/json":"3.12.0" 字段。
  • 顺手修掉一个潜在 500:dump() 默认遇到非法 UTF-8 会抛 type_error.316,
    也就是 GET /api/echo?q=%FF%FE 这种一个 URL 就能把接口打挂。现在统一带
    error_handler_t::replace,坏字节换成 U+FFFD,返回的仍然是合法 JSON
    (手写转义那会儿是直接吐非法字节,只是从来没校验过)。
  • 页面标题补上第四个库:<title>、顶部徽章、页脚都加了 nlohmann/json,
    原生窗口标题同步。
  • 依赖接入方式:用 include.zip + 自建 INTERFACE 目标,而不是官方文档推荐的
    json.tar.xz —— 后者带一份它自己的 CMakeLists.txt,会把第三方的构建脚本
    一起拉进来。配了 URL_HASH,上游换了 asset 会当场报错而不是悄悄编过。
  • CI 的 Linux 冒烟测试升级成真断言:每个接口的返回必须能被 python3 的
    json.load 吃掉、关键字段对得上,另加「缺参数必须 400」「坏 UTF-8 不能 500」
    「首页内容必须是这一版」三条。以前那步只是 curl 出来看一眼,等于没测。
  • README:新增「JSON 处理」小节(前后对比 + 代价)和坑 11(ordered_json
    的键顺序、error_handler_t、42.0);「已验证的环境」按新实测重新校准。

升级提醒

如果你在外部脚本里 POST /api/add,把期望值从 "sum":42 改成 "sum":42.0 即可
(jq、JSON.parse、Python 的 json 都当同一个数读)。

下载

文件 平台 运行前提
webview-demo-v0.2.0-windows-x64.exe Windows 10/11 x64 WebView2 运行时(Win11 及较新的 Win10 一般自带)
webview-demo-v0.2.0-linux-x64 Linux x64 WebKitGTK 4.1(libwebkit2gtk-4.1-0)+ 可用的显示环境

两个二进制都是推 tag 之后由 CI 现场从该 commit 编出来的,不是手工上传的。

完整变更

v0.1.1...v0.2.0