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

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

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

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

TOP2:用户权限验证。

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

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

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

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

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

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

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

服务端接口中的那些坑相关推荐

  1. 米大师服务端接入坑记录

    米大师服务端接入坑记录 近期因为项目需要接入应用宝的米大师支付,在接入中遇到一些坑,这里记录以下,以便方便需要的朋友参考. 主要是以下几个需要注意的问题: 文档混乱,腾讯应用开放平台和米大师支付等地方 ...

  2. 传统行业转型微服务的挖坑与填坑

    原文:传统行业转型微服务的挖坑与填坑 一.微服务落地是一个复杂问题,牵扯到IT架构,应用架构,组织架构多个方面 在多家传统行业的企业走访和落地了微服务之后,发现落地微服务是一个非常复杂的问题,甚至都不 ...

  3. 安卓使用Socket发送中文,C语言服务端接收乱码问题解决方式

    今天用安卓通过Socket发送数据到电脑上使用C语言写的服务端,发送英文没有问题,可当把数据改变成中文时,服务端接收到的数据确是乱码. 突然想到.VS的预处理使用的是ANSI编码.而安卓网络数据都是U ...

  4. 移动端与PHP服务端接口通信流程设计(基础版)

    为什么80%的码农都做不了架构师?>>>    针对 --->非开放性平台 --->公司内部产品 接口特点汇总: 1.因为是非开放性的,所以所有的接口都是封闭的,只对公司 ...

  5. android 上传文件用php程序在服务端接受(一)

    php服务端接受程序..file_up.php. <?php /* require_once('lib/session_config.php');require_once('lib/flydc. ...

  6. java post流_Java后端HttpClient Post提交文件流 及服务端接收文件流

    客户端将文件转换为流发送: 依赖的包: org.apache.httpcomponents httpclient 4.4 org.apache.httpcomponents httpmime 4.4 ...

  7. 区域数据导入功能(在服务端接收上传文件)

    在服务端接收上传的文件 在Action中提供一个File类型的属性,名称和上传的文件输入框名称一致regionFile @Controller @Scope("prototype" ...

  8. 表单及数据提交、表单的作用、服务端接收提交的数据、php处理数据流程、文件域及文件域中数据处理、php展示数据(响应)

    表单及数据提交: 表单的作用: 用于收集相关信息:html中有专门提交数据的标签,可以很容易的收集用户输入的信息,这个标签有两个重要的属性:action表单提交的地址和method以什么方式提交表单, ...

  9. 全新版个人博客小程序,无需开发服务端接口即可使用

    介绍: 全新版个人博客小程序,服务端使用的是Bmob后端云,无需开发服务端接口即可使用,快速便捷,代码简洁,功能包括文章列表,文章分类列表,赞赏功能,签到,收藏文章,查看文章,点赞文章,消息通知,评论 ...

最新文章

  1. 职场,18个细节决定成败[转载]
  2. kcf 脊回归 范数
  3. tensorflow 实现逻辑回归——原以为TensorFlow不擅长做线性回归或者逻辑回归,原来是这么简单哇!...
  4. aws beanstalk mysql_AWS Elastic Beanstalk
  5. frame页面地址转向跨域解决方法
  6. oracle linux rdac,redhat 6.4 安装RDAC
  7. CS190.1x Scalable Machine Learning
  8. 我的编程认知:多思考、多编码、多测试
  9. 转】 神奇图片解析之旋转的舞女
  10. postmessage传递字符串_postMessage 还能这样玩
  11. SecureCRT 下载安装与连接(转)
  12. CSS 颜色代码大全
  13. 浏览器扫码器 ,扫描二维码,浏览器调起二维码,扫一扫功能,网页版扫一扫
  14. 数据导入与预处理-第8章-实战演练-数据分析师岗位分析
  15. 面试25个经典问题回答技巧
  16. Visual Studio完成并换行快捷键
  17. 从数据分析角度谈谈谁才是这个夏天的无价之姐——基于弹幕文本分析
  18. Python正则表达式一文详解+实例代码展示
  19. 字符串日期 转换成 需要的格式的 字符串日期(超强)
  20. atom配置python_在Atom中设置Python开发环境

热门文章

  1. windows下Apache虚拟主机配置
  2. 存储芯片在智能化产业链中扮演的角色将更加重要
  3. Spring Security源码分析四:Spring Social实现微信社交登录
  4. saiku+kettle整合(六)olap操作
  5. 08-spring学习-annotation配置
  6. eclipse使用小技巧
  7. macOS 10.11.* 安装scrapy
  8. 多任务管理类 MutilTaskManager
  9. java linux 服务_java项目部署Linux服务器几种启动方式总结经验
  10. 密码学替代技术_替代技术及其类型| 密码学