如何解决表达“在参数中未指定任何内容时全选”的正确方法是什么?
假设我们有一个 HTTP 端点来按名称获取所有元素?
GET /elements?name={name}
{name}
的值可以为 CSV 或不存在
valid:
GET /elements?name=Bill,Mary,Ann
GET /elements?name=Mike
GET /elements
invalid:
GET /elements?name=
不知何故,我们在控制器中发现 name
没有通过。我们知道合约意味着返回 elements
的所有值。关于进一步行动的可能决定(我在不同的项目中见过)是:
- 使用 NULL 或“虚拟”替换,如秘密字符序列“!@$@%#$”,并在构建查询时在数据库中处理它们
- 使用
if (present) { executeQueryA } else { executeQueryB }
逻辑
我不确定我是否喜欢这两种方法中的任何一种,因为当有多个可选过滤器时,这些设计变得无法维护。有些事情让我相信有更好的方法来处理这种情况。
什么是后端和数据库查询的正确设计来处理“全选”的情况下什么都没有给出?只是一个一般的想法和一些伪代码将不胜感激。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。