我正在开发一个API,它接受过滤器的参数(如下所述)
/api/endpoint?filter_key_1=filter_value_1&...
我以前在春天工作过,其中标准API允许动态构建SQL查询,而不会有太多麻烦。在戈兰,我使用 gorm 来处理 ORM 操作。是否无论如何都可以在不编写冗余代码的情况下使用可选参数构建查询?
例如:如果发送的请求是:
/api/endpoint?fk_1=fv_1&fk_2=fv_2&fk_3=fv_3
Query generated should be :
select * from table where fk_1 = fv_1 AND fk_2 = fv_2 AND fk_3 = fv_3
但是在以下情况下:
/api/endpoint?fk_1=fv_1
Query generated should be:
select * from table where fk_1 = fv_1
目前,我的方法是检查每个变量是否存在,并将查询构建为字符串:
query:="select * from table where "
if fk_1 != ""{
query += "fk_1 = fv_1"
}
... and so on
但这似乎非常尴尬和容易出错
任何帮助将不胜感激!谢谢
编辑基于@bjornaer的答案,帮助我的是以一种我可以将其发送到gorm,map[字符串]接口{}的形式获取map[字符串][]字符串。
这个线程将同样有所帮助。
现在不再需要在过滤器中进行冗余检查或字符串操作
潇潇雨雨
相关分类