示例说明
在 示例1 中,我们通过 API 获取到了 “本周新品” 视图下的所有商品数据。
通过视图 ID 来筛选数据是最便捷的方式,但也存在短板,就是每一个不同筛选条件都要重新创建视图。如果有十个商品分类,难道要创建十个视图,再调 API 吗?有没有一种可以灵活地、随时修改筛选条件的办法呢?
参数 filterByFormula
可以满足此类需求。智能公式包含多种函数,满足不同场景下的计算,开发者编写 “智能公式” 从而实现复杂的记录筛选。
样本数据
API 文档里所使用的样本数据,皆可通过此分享链接获得:《API 教程样本数据》,建议另存到自己的空间站,然后跟着例子一步一步学习,事半功倍哦!
本示例将使用分享链接里的「样本数据2 - 商品列表」展开讲解。
操作步骤
例如:我们想要筛选出「卖点」包含“真空”或“保温”这两个关键词的所有商品,并且按照促销价由低到高排序。
步骤一:将样本数据另存到自己的空间站里,然后访问《样本数据2 - 商品列表》。
步骤二:调用 API 「获取记录」,添加请求参数 filterByFormula
,值为 OR(find("自动", {主要卖点}) > 0, find("保温", {主要卖点}) > 0)
,添加请求参数 sort
, 值为 {"field": "促销价", "order": "desc"}
。
步骤四:维格表服务端接收到请求后,将会返回符合过滤条件——「卖点」包含“真空”或“保温”这两个关键词的记录数据,并且按照“促销价”由低到高排序。
API调用
参数:filterByFormula
参数类型:字符串(String)
使用公式作为筛选条件,返回匹配的记录,访问《一分钟上手公式》了解公式使用方式
参数格式:
// 筛选出「卖点」包含“真空”或“保温”这两个关键词
filterByFormula=OR(find("自动", {主要卖点}) > 0, find("保温", {主要卖点}) > 0)
// 按照促销价由低到高排序
sort={"field": "促销价", "order": "desc"}
① cURL 示意:
注意:下方代码为了直观显示参数的结构,没有转义编码。正式调用时,请使用 encodeURIComponent() 函数对 URL 参数进行转义编码。
// 编码前
curl 'https://api.vika.cn/fusion/v1/datasheets/dstdQxaqwGaoBbB8bK/records?filterByFormula=OR(find("自动", {主要卖点}) > 0, find("保温", {主要卖点}) > 0)&sort={"field": "促销价", "order": "desc"}' \
-H 'Authorization: Bearer {_替换成你的API_Token_}'
// 编码后
curl 'https://api.vika.cn/fusion/v1/datasheets/dstdQxaqwGaoBbB8bK/records?filterByFormula=OR%28find%28%22%E8%87%AA%E5%8A%A8%22,%20{%E4%B8%BB%E8%A6%81%E5%8D%96%E7%82%B9}%29%20%3E%200,%20find%28%22%E4%BF%9D%E6%B8%A9%22,%20{%E4%B8%BB%E8%A6%81%E5%8D%96%E7%82%B9}%29%20%3E%200%29&sort={%22field%22:%20%22%E4%BF%83%E9%94%80%E4%BB%B7%22,%20%22order%22:%20%22desc%22}' \
-H 'Authorization: Bearer {_替换成你的API_Token_}'
② 调试工具示意:
返回:
正常情况下,维格表服务端会返回下述 JSON 数据包
{
"code": 200,
"success": true,
"data": {
"total": 7,
"pageNum": 1,
"pageSize": 7,
"records": [
{
"recordId": "recdj7n9GOa3v",
"createdAt": 1610103747000,
"updatedAt": 1610103747000,
"fields": {
"摘要": "一机多用,轻量杯体设计,一键自动清洗",
"分类": "料理机",
"原价": 399,
"促销价": 399,
"入库时间": 1610103747460,
"标题": "破壁料理机(小Q)",
"配图": [
{
"id": "atc7DyNEiflb9",
"name": "7a0418657b66834a9a8a2563ab10a061.png?w=800&h=800",
"size": 203359,
"mimeType": "image/png",
"token": "space/2020/05/26/1265120088364867586",
"width": 800,
"height": 800,
"url": "https://s1.vika.cn/space/2020/05/26/1265120088364867586"
}
],
"主要卖点": [
"保温",
"触摸式"
]
}
},
{
"recordId": "recX1UxK12bIo",
"createdAt": 1610103747000,
"updatedAt": 1610103747000,
"fields": {
"摘要": "八大功能,冷热双享,一键触控,多挡调温",
"分类": "养生壶",
"原价": 399,
"促销价": 369,
"入库时间": 1610103747460,
"标题": "生活多功能冷热杯",
"配图": [
{
"id": "atcoV3vrQLmFN",
"name": "a3e97801d767a5c272b31f897eb62a2e.png",
"size": 158879,
"mimeType": "image/png",
"token": "space/2020/05/26/1265120551721406466",
"width": 800,
"height": 800,
"url": "https://s1.vika.cn/space/2020/05/26/1265120551721406466"
}
],
"主要卖点": [
"高硼硅玻璃",
"煮",
"保温"
]
}
},
// ...more
]
},
"message": "SUCCESS"
}