服务端接口中的那些坑

简介: TOP1:版本意识与兼容性问题。    对于一个好的程序员来说,思考的时间>=写代码的时间,如果思路不对写的代码越多,错的也越多,任何时候思考是保证高效工作最省事的武器。   对于接口开发,不同于bs项目,服务器端一更新,所有问题都解决了,大家访问都是最新的程序,不存在任何版本的问题;但接口开不同,因为你开发接口有是被不同的客户端版本访问的,比如app的接口,app版本有很多个。

TOP1:版本意识与兼容性问题。 

  对于一个好的程序员来说,思考的时间>=写代码的时间,如果思路不对写的代码越多,错的也越多,任何时候思考是保证高效工作最省事的武器。

  对于接口开发,不同于bs项目,服务器端一更新,所有问题都解决了,大家访问都是最新的程序,不存在任何版本的问题;但接口开不同,因为你开发接口有是被不同的客户端版本访问的,比如app的接口,app版本有很多个。这个时候问题来了,如果中途我调整了数据库多加了字段,新app用户请求的时候带了这个字段,插入和修改都不会存在任何问题,但老客户端呢,如果此时你及没有把新旧接口分离,也没判空除了新的字段,那么你的程序就会报错,插入到数据库就会有问题,你的旧app请求就会出问题。

  所以开发接口的第1要诀:所有的方法升级必须考虑老用户的兼容性问题。

 

TOP2:用户权限验证。

  安全是一个系统之所以生存的根基,如果做任何程序不考虑安全问题,那么他的程序一定是糟糕的,一定的失败的。

  设想这样一个情景,我在开发一个修改用户资料接口的时候,只需要使用用户的id和要修改的资料就够了吗?当然不够,如果只根据用户的id就修改资料的话,那么非法的用户就拥有了修改所有的用户资料的权利,只要id传对,这是多么可怕的事情。

  所以开发接口第2要诀:在修改和查看任何私有资料的时候,先用令牌验证用户的有效性,证明你是你自己了才能进行关键性的操作,这个步骤在接口这里是永远不能省略的

 

TOP3:在for循环中嵌套查询。

  性能问题是一个程序好坏最直观的体现,也是验证一个程序员最直接的方式,在这里呢我要强调一件事,就是不要在for循环里面嵌套查询。因为大家都知道对于服务器来说,最可能造成资源瓶颈的地方就是数据库,所以数据库资源也就是最昂贵的资源。

  设想一个这样的情景,如果现在有1w个经销商,每个经销商有多个经验产品,他们是通过中间表进行关联的,我现在要查询每个经销商的产品数据组成一个对象返回给app,最直观的做法是什么?就是我for 1w次去查询经销商的产品,然后组成一个数据,那么这样做造成的结果是什么,你会查询至少1w次数据,那么有没有办法解决这个问题,当然,你可以把所有经营产品查出来,放到内存中然后每次从内存中去取经营产品就可以了,这样就把1w次的查询变成了1次。

  所以开发接口第3要诀:不要在for循环中查询数据库。

 

img_fa0be433d68c8212b2b0b3b1a564ccb1.png
如果本文对你有所帮助,请打赏——1元就足够感动我:)
支付宝打赏 微信打赏
联系邮箱:intdb@qq.com
我的GitHub: https://github.com/vipstone
关注公众号: img_9bde0f31ac4a0eca10b1bd7414b78faf.png


作者: 王磊
出处: http://vipstone.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,请标明出处。

相关文章
|
4月前
|
缓存 网络协议 Linux
c++实战篇(三) ——对socket通讯服务端与客户端的封装
c++实战篇(三) ——对socket通讯服务端与客户端的封装
|
5天前
|
安全 API 网络架构
9-6|我现在请求一个接口,怎么关闭认证啊
9-6|我现在请求一个接口,怎么关闭认证啊
|
Web App开发 缓存 网络协议
如何实现服务端向客户端推送数据
常见的http协议只能从客户端主动向服务端请求数据,而服务端无法向客户端发送数据.本文通过介绍几种方式来实现上述功能.
|
5月前
|
存储 JSON 监控
源码分析Zabbix客户端如何向服务端发起请求
源码分析Zabbix客户端如何向服务端发起请求
65 2
|
10月前
|
网络协议 算法 Java
gRPC 客户端调用服务端需要连接池吗?
gRPC 客户端调用服务端需要连接池吗?
|
10月前
|
网络协议 Cloud Native
为什么服务端会有那么多的 TimeWait ?
为什么服务端会有那么多的 TimeWait ?
|
12月前
|
Windows
WCF服务端调用客户端.
WCF服务端调用客户端.
|
消息中间件 JavaScript 小程序
OkHttp完美封装,一行搞完外部请求
OkHttp完美封装,一行搞完外部请求
|
运维 Java 数据库连接
排除法,先找客户端问题,再找服务端问题
先找客户端问题,再找服务端问题
74 0