.net 当API';s输入仅接收sql查询字符串

.net 当API';s输入仅接收sql查询字符串,.net,api,.net,Api,最近,我的同事想为不同的Web服务器(.net、java、android)设计一个API来获取他们想要的数据,顺便说一下,这是一个.netapi项目 但是API只接收SQL查询字符串…我觉得API的客户端很快就会遇到麻烦 我认为API的目的是,不要让客户机担心“我们应该如何创建DAL?”、“数据库中的表是什么关系?”。客户机不应该担心这些,只需将参数传递到API中,然后您就可以获得所需的所有数据 我不认为参数是SQL查询字符串。如果我必须将SQL查询字符串传递到API中,为什么我不直接使用ADO

最近,我的同事想为不同的Web服务器(.net、java、android)设计一个API来获取他们想要的数据,顺便说一下,这是一个.netapi项目

但是API只接收SQL查询字符串…我觉得API的客户端很快就会遇到麻烦

我认为API的目的是,不要让客户机担心“我们应该如何创建DAL?”、“数据库中的表是什么关系?”。客户机不应该担心这些,只需将参数传递到API中,然后您就可以获得所需的所有数据

我不认为参数是SQL查询字符串。如果我必须将SQL查询字符串传递到API中,为什么我不直接使用ADO或EF自己获取数据?我的Web服务器的框架是ASP.NET

为什么存在API?因为管理者需要DAL(BO)来获取数据,并且DAL(BO)还必须与JAVA团队的Web服务器一起工作

这里是简单的架构

客户端---Web服务器---API---数据库


我错了吗?将SQL查询字符串传递到API方法是否还不错?缺点是什么?

将SQL查询字符串发送到API以检索数据是世界上最糟糕的想法

所以基本上,如果有人入侵你的系统,你已经为他们编写了一个很好的数据库API

如果要这样做,那么最好直接公开数据库连接方法。不需要API。好主意

开发API来完成您想要的工作。如果你需要改变它,那么就改变它

编辑:

如果他们希望能够灵活地修改返回的数据,那么可以将存储过程或视图的名称发送到API。验证后,API可以使用存储过程或视图查询数据库


然后,他们可以添加、删除或修改数据库中的存储过程和视图,而不会暴露任何重大安全问题

将SQL查询字符串发送到API以检索数据是世界上最糟糕的想法

所以基本上,如果有人入侵你的系统,你已经为他们编写了一个很好的数据库API

如果要这样做,那么最好直接公开数据库连接方法。不需要API。好主意

开发API来完成您想要的工作。如果你需要改变它,那么就改变它

编辑:

如果他们希望能够灵活地修改返回的数据,那么可以将存储过程或视图的名称发送到API。验证后,API可以使用存储过程或视图查询数据库


然后,他们可以添加、删除或修改数据库中的存储过程和视图,而不会暴露任何重大安全问题