跳转到内容
Tutorial

使用 REST API 生成 QR 码:一次 POST,即时 SVG

| 5 min read

通过一个 POST 请求从任何 URL 或文本生成 QR 代码。 在 100 毫秒内返回 SVG。 免费层,无需安装库,6 个可配置参数。

QR code displayed on a phone screen
Photo by Markus Winkler on Unsplash

您的电子商务结帐需要显示每个订单的跟踪 URL 的二维码。 你可以 安装客户端 QR 库,配置画布元素,处理渲染生命周期, 并向您的捆绑包添加 30-40 KB。 或者您可以发送一个 POST 请求并返回一个 SVG。

波托伊 /v1/qr/generate 端点将任何字符串或 URL 转换为可扫描的 QR 代码。 它返回原始 SVG,您可以嵌入 HTML、保存到文件或流式传输为 PDF。 没有 npm 包,没有画布依赖,没有构建步骤。

API 调用

发送带有您要编码的文本的 POST 请求:

响应是原始 SVG 图像(内容类型: image/svg+xml):

该 SVG 在任何尺寸下都可以清晰呈现,因为它是基于矢量的。 将其放入 <img> 标记,将其内联到 HTML 中,或通过管道将其传输到文件。 没有 JSON 解析 需要; 响应主体是 SVG 本身。

参数

端点接受六个参数。 仅有的 text 是必须的:

  • 文本 (字符串,必需):要编码的 URL 或文本。 最多支持 ~4,296 字母数字字符。
  • 尺寸 (数字,默认 300):宽度和高度(以像素为单位)。 范围:50 至 2000。
  • 深色 (十六进制字符串,默认 #000000): 的前景色 二维码模块。
  • 浅色 (十六进制字符串,默认 #ffffff):背景颜色。
  • 错误修正级别 (字符串,默认 M): L (7%) 之一, M (15%)、Q (25%) 或 H (30%)。 更高的级别可以容忍更多的损坏,但会产生更密集的代码。
  • 利润 (数字,默认4):模块中二维码周围的安静区域。 范围:0 到 20。

这是使用所有六个参数的请求:

实际例子

餐厅菜单二维码

在餐桌帐篷上打印二维码,以便食客可以在手机上调出完整菜单。 错误 H 校正可处理磨损和咖啡渍。

活动门票二维码

在每个二维码中编码唯一的门票 ID。 工作人员在门口用智能手机扫描 相机。 纠错 Q 在密度和损伤容限之间提供了良好的平衡 用于打印徽章。

支付链接二维码

生成发票、收据或销售点显示的可扫描付款链接。 的 顾客扫描它并登陆 Stripe 结账页面。

循环中的批量生成

需要产品目录的二维码吗? 循环遍历 URL 列表并将每个 SVG 保存到磁盘。 此 bash 脚本在一秒钟内生成四个 QR 码:

输出:

Node.js 示例:用于订单跟踪的 QR 码

这个 Express 服务器公开了一个 /orders/:id/qr 端点。 当您结帐时 页面或确认电子邮件模板获取此 URL,它会返回一个 SVG QR 代码指向 到订单的跟踪页面。

用法:

端点设置 24 小时缓存标头,因此同一订单的重复请求不会命中 再次调用 API。 在生产中,在此路由前面添加 Redis 或 CDN 以获得更高的流量。

客户端 QR 库与 API:何时使用哪个

当您需要服务器端生成(电子邮件、PDF、收据)时,当您想要 保持前端包较小,或者在后端工作流程中生成二维码时 例如订单处理或票据发行。

当您的应用程序需要离线工作且延迟更重要时,请使用客户端库 比包大小(渲染时间低于 5 毫秒),或者当您构建用户生成的工具时 二维码在浏览器中交互,您不想依赖网络请求 对于每次击键。

要点

每分钟 5 个请求的免费套餐涵盖开发、原型设计和小批量 生产用途。 对于批量生成或高流量应用程序,请在 Authorization: Bearer 标头。 检查 API文档 获取完整的端点参考。

FAQ

我需要 API 密钥来生成二维码吗?
不需要。免费套餐允许每分钟 5 个请求的匿名访问,并具有基于 IP 的速率限制。 对于生产应用程序或批量生成,请在授权标头中添加 API 密钥以删除速率限制。
我可以用 PNG 代替 SVG 吗?
将格式参数设置为“base64”以接收 QR 代码作为可嵌入 img 标签中的数据 URI。 API 在所有情况下都会返回基于 SVG 的输出,因为 SVG 与分辨率无关并且在任何尺寸下都会呈现清晰的效果。 如果您需要光栅文件,请使用画布元素转换为 PNG 客户端。
QR 码的最大数据长度是多少?
QR 码最多支持约 4,296 个字母数字字符或 2,953 字节的二进制数据。 大多数 URL 和短字符串都在这些限制范围内。 如果您达到上限,请先使用链接缩短器缩短您的 URL。
我应该使用哪种纠错级别?
对于数字屏幕使用 M(15% 恢复率),当代码密度很重要时使用 L(7%)。 对于可能磨损、折叠或部分被徽标覆盖层覆盖的印刷材料,请选择 Q (25%) 或 H (30%)。
我可以自定义二维码的颜色吗?
是的。 将 darkColor 和 lightColor 作为十六进制值传递(例如“#1a1a2e”和“#ffffff”)。 确保两种颜色之间有足够的对比度,以便扫描仪能够可靠地读取代码。

开始使用 botoi 构建

150+ 个 API 端点,涵盖查询、文本处理、图片生成和开发者工具。免费套餐,无需信用卡。