我应该怎么来设计一个对前台的接口?按照业务还是按照灵活性?
近期需要开发一个项目,
目前公司现有的接口根据页面来走的,比如:
第一种接口如下:
http://api.xxx.com/getQruery? id=XXX ,itemtype=01
返回:姓名,年龄、体重、身高、建议
http://api.xxx.com/getQruery? id=XXX ,itemtype=02
返回:姓名,年龄、血压、xx、平均血压、脉率。。。、建议
http://api.xxx.com/getQruery? id=XXX ,itemtype=03
返回:姓名,年龄、项目1结果,项目2结果,项目3结果。。。。。(有多少项返回多少项)
第二种接口,如下::
输入:http://api.xxx.com/getQruery? id=XXX ,itemtype=体重,血压,生化项目1,生化项目2
返回:姓名、年龄、体重结果、血压结果、生化项目1结果,、生化项目2结果
我现在与后台争论的有两个问题:
1、对方说,用第一种方式的话在后期并发量比较大的过程中,比较容易进行设计上的扩展(后台用的java)
2、第二种接口的话不容易进行安全设计。
我现在的问题在于
1、第二种接口难道很难做分布式扩展么?我根据用户的id或者根据项目进行分布式的处理应该是可以的吧?在接口下面增加一层进行分发的话应该比较容易吧?
2、接口的设计应该是基于业务?还是基于灵活?比如第一种就是属于根据业务来,你前端有一个什么样的页面,我就给你返一个什么样的接口,但是这样的问题就是,接口不灵活,有100个页面就可能有100个接口,维护比较麻烦。
而第二种会比较灵活,我可能一个接口就返回N个类的数据,你前台需要什么,直接调用就行
3、关于安全设计我感觉,只要字符加密,增加校验,什么样的设计应该都行吧?
不知道大家现有的项目中,接口是怎么设计的!