You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用bs-fetch传递查询字符串参数?

使用bs-fetch优雅传递查询字符串参数的方法

嘿,直接拼接查询字符串确实在参数多的时候既麻烦又容易出错(比如忘记转义特殊字符),其实bs-fetch可以配合浏览器原生的URLSearchParams来优雅解决这个问题,这是更规范、易维护的方案。

方法一:用URLSearchParams构建参数

你可以先把参数整理成键值对列表,再转换成URLSearchParams,最后拼接到基础URL上:

// 定义所有查询参数
let paramList = [
  ("param1", "value1"),
  ("param2", "value2"),
  ("param3", "包含&特殊=字符的值"), // 特殊字符会自动被转义
];

// 从键值对创建URLSearchParams实例
let searchParams = new%js URLSearchParams(Js.Dict.fromList(paramList));

// 拼接成完整URL
let fullUrl = "https://example.com/api" ++ "?" ++ searchParams->URLSearchParams.toString;

// 调用fetch
Fetch.fetch(fullUrl)

方法二:用URL对象直接构建(更推荐)

这种方式更直观,你可以直接操作URL实例的searchParams属性来添加/修改参数:

// 创建URL实例
let apiUrl = new%js URL("https://example.com/api");

// 逐个添加参数
apiUrl->URL.searchParams->URLSearchParams.set("param1", "value1");
apiUrl->URL.searchParams->URLSearchParams.set("param2", "value2");
// 支持动态添加可选参数
Option.iter(
  paramValue => apiUrl->URL.searchParams->URLSearchParams.set("optionalParam", paramValue),
  maybeOptionalParam // 假设这是一个Option.t<string>类型的可选参数
);

// 转换为字符串后调用fetch
Fetch.fetch(apiUrl->URL.toString)

为什么这两种方法更好?

  • 自动编码:URLSearchParams会自动处理特殊字符(比如&、=、空格等)的转义,避免手动拼接时出现的编码错误。
  • 易维护:添加、删除或修改参数只需要操作对应的键值对,不用去冗长的字符串里找位置修改。
  • 类型安全:配合ReasonML的类型系统,你可以更方便地约束参数的类型,减少错误。

内容的提问来源于stack exchange,提问作者csb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:13:40