如何定义REST API查询字符串实现名称前缀匹配查询?
合理的REST查询字符串设计方案(基于SCIM规范)
方案1:遵循SCIM的过滤语法
SCIM规范定义的filter参数天然适合这类模糊匹配场景,你可以直接用它表达前缀匹配逻辑:
- 端点示例:
{Base URL}/myresource?filter=sw(name, "ABC")
这里的sw是SCIM标准的**Starts With(前缀匹配)**操作符,完全对应SQL里的LIKE 'ABC%',语义清晰且符合规范,后端只需把该过滤规则转换成对应SQL即可。
方案2:自定义前缀匹配参数
如果不想完全依赖SCIM语法,也可以设计更直观的自定义参数,降低理解成本:
- 端点示例:
{Base URL}/myresource?name_starts_with=ABC
这种命名直白易懂,前端开发者一眼就能明白是做前缀匹配,后端直接将参数值拼入LIKE 'value%'执行查询即可。
方案3:扩展基础参数的匹配规则
如果想保留name参数的基础形式,可以搭配额外参数明确匹配规则:
- 端点示例:
{Base URL}/myresource?name=ABC&match=prefix
后端根据match参数的值(比如prefix/exact/contains)切换SQL匹配逻辑,当match=prefix时就使用LIKE 'ABC%'。
为什么不推荐单纯的?name=ABC
这种写法默认传递的是精确匹配语义,如果用来表达前缀匹配会造成语义模糊,既容易让调用者误解,也违背了REST API语义一致性的原则——相同参数应对应固定的匹配逻辑。
内容的提问来源于stack exchange,提问作者llasarov
相关产品推荐
相关产品推荐

