PHP开发Api心得小结

前两天老板给了个活,大概需求就是商机之前是通过人工去导入的excel,现在写个接口,让客户给传商机数据进来,我们检验一下然后存起来,但是客户公司比较大(相对于我们公司。。),要求的比较严,所以老板的要求是要写的bigger高一点。


我的思路:

  1. 签名(安全性)
    (用户唯一的标识码+时间戳+数据条数)的两次md5加密
  2. 错误代码配合文档(专业,而且数字不涉及编码问题)
    根据不同的错误类型区分错误代码
  3. 异常处理(装(哔——))
    所有本来能用if-else判断返回错误代码的地方统统用了抛出异常,说实话除了bigger高之外我并不知道优点是什么,而且异常处理会拖慢处理速度
  4. 用switch代替if-else(可读性)
    这个的有点还是很明显的,很多的判断条件或成立之后都要抛出同一个异常,如果用if来写的话,条件语句会很长,可读性会很低,但是这个算是基本的吧。。也提升不了啥bigger
  5. 日志记录每次请求的返回值(记日志总是没有错的)
    记录下是数据是从哪个客户传过来的,

测试过程中出现的问题

  1. 无法在我这看到客户传过来的数据
  2. Oracle插入失败时tp报错,直接把插入失败错误页面返回给了访问者,安全性极差

    解决办法:emmm,现在还没解决。。。只是规范了下他们的数据还有我们这的验证,如果真的还是出了这个错误估计还会给他们报错

  3. 接上,也就没有默认的异常处理,如果系统报错或者框架报错,根本搂不住,而且有个未知错误的错误码,却没有真正触发

老板的提议

  1. 签名计算方式不合理,不应该所有的东西都在json中,不然谁截取到之后直接就能破解

    解决办法 :给每一个调用的客户分配一个md5(base64(code))加密之后的唯一加密串,拼接到之前的字符串中再加密

  2. 针对上面的问题1:必须能看到的,记日志吧,同一次的要能看出是同一次的,加个标识啥的

    解决方法:本地记录的日志添加记录内容,从开始时候传入的json,到每一个数据非法但不至于返回错误码的错误细节,再到最后的返回码,然后标识没有加,而是在每次请求的开始的时候记录json之前加入了一行”===========”,结束返回错误码时在后面加了一行”===================”

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据