前言

做了1年半的PHP开发,对PHP写接口的一些注意事项和心得体会也是有一些的。有空就写下来分享一下,大部分参考别人的一些建议。
  1. 文档要写周全,需要的每个字段,规定是什么类型,什么含义要标柱清楚,写完接口后自己先测试一下是否通过,不要直接扔给测试或者开发,然后反应错误了在进行修改
  2. 接口要做到小,同时比较多,切记一个接口的代码量很多。做到接口要小而多,不要做大而全,以方便减少服务器的压力
  3. 在做app接口的返回值的数据类型时需要注意,弱语言和强语言的处理数据类型毕竟不同,比如空数组的返回至少要初始化一个,这样可以让一些客户端处理起来方便,而不会因为一些数据的不正常造成 crash,还有就是错误返回的标准统一周全,以及返回适当的错误提示
  4. 当数据库里的字段发生变更时,要及时更新文档,并和使用到的程序员和测试人员说一声
  5. 接口的测试(如果是Node.Js / MongoDB 的搭配,也可以弄个自动化测试),测试要包含所有的返回情况,接口的规范,可以遵循 RESTfull API
  6. 还有个需要注意的,可能是 content-type ,返回的是 json 数据,最好就是 application/json ,客户端一般都会用第三方的网络请求组件,而一些组件对 content-type 有严格的限制,当然这个需要和客户端的程序员确认,避免你明明返回 json 在 text 下可以正常显示,客户端却无法解析出来
  7. 我们的接口一般是给app用的, 接口要加密。每次回话前 都向服务器请求token,服务器以session存储,回话结束,就销毁
  8. 用restful,最好开启https,不然会被坑死的,运营商,浏览器,路由器一般发现4XX,5XX状态,喜欢替换成自己的广告,如果不用restful,返回的都是200状态,就不会被替换成运营商或路由器自己的导航页了,运营商,路由器容易擅自根据403,404状态推自己的导航页
  9. 问一个问题。如果服务端采取了防重放机制,要求http请求带上时间戳,和服务器的时间误差超过一段距离则请求不合法。那么,客户端的时间戳不一定是正确的(有可能用户改了系统时间),这种方案该怎么调整?
    答(1)第一次启动从服务器获取一次时间,之后客户端自动计数维护这个时间,每秒加一,这样就跟服务器时间一致了 
    答(2):应该是需要时间戳的请求。带上服务器的时间戳。比如说修改个人资料。是请求个人资料。客户端修改。发送修改后的个人资料。在请求个人资料的时候服务器就带上时间戳。最好是上面所说的token。我们可以验证这个时间戳。发送的时候带上这个时间戳或者token

关于session:
问:APP登录没有了网页的session,怎么处理的?
答:jwt oauth - slee
答: app一般通过token来进行登录验证 - 三千
答:就是登录返回APP一个token,保存在客户端,下次传递这个token来验证身份 - 梦想旅程_北京
问:一次请求算一个会话?还是token是有时效的 - yongsean
答:token是有时效的,可以去更新-蜗牛
答:token 不保存到客户端本地。 - windk
问:每次请求前必须过去一次? - yongsean
答:对,时效时间内,多次请求 可以只取一次 - windk
答:token这个属于安全性的东西 取决于信息的重要性 通常来说安全性要求越高,所要做的活就越,我们大致换了经历过三种方面:第一种 直接在 header里传用户名 密码 最简单,但最不安全。第二种 就在客户端种cookie 这个跟web一样了。第三种 就是用token 用一定的规则生成token 客户端每次请求带token 服务端用同一规则生成token 把token有效时间 放到token加密规则里 省得再验证一个时间戳 

一些优秀的链接信息
1、远程接口设计经验分享 :http://mp.weixin.qq.com/s?__biz=MzAwNjQwNzU2NQ==&mid=402064901&idx=2&sn=0b5f56a97b431ed355b75a9e17f2e754&scene=1&srcid=02192eUFKNkAmEEmoCbmol8o
选大公司还是小公司 http://mp.weixin.qq.com/s?__biz=MzA5MTE0MDUxMA==&mid=419603421&idx=1&sn=3de11659477bdd4fd6097162a45a8071&scene=1&srcid=0219ryWsGm19snXOhDt6vRpi#wechat_redirect
2、怎样沟通升职快?http://mp.weixin.qq.com/s?__biz=MjM5NDE1MDU0MA==&mid=410906454&idx=1&sn=750f12570578213156a2c87b53fbd1d3&scene=1&srcid=0219sTxsLd9qTZYZCRD8RV27#wechat_redirect
3、json_encode中文unicode的问题http://m.haosou.com/index.php?a=newTranscode&u=http%3A%2F%2Fwww.th7.cn%2FProgram%2Fphp%2F201506%2F482376.shtml&m=a8429c606917316c7b4ce62cb4d8f10fe4982399&q=json%20encode%E7%AC%AC%E4%BA%8C%E4%B8%AA%E5%8F%82%E6%95%B0&sid=6a9ce8d7a1018f5be43b699c0e124004 - 崔洪波
4、MySQL 在大型网站的应用架构演变http://mp.weixin.qq.com/s?__biz=MzA5ODM5MDU3MA==&mid=402228394&idx=1&sn=2177f4ca396c655054ab9b8c99b7a0a6&scene=1&srcid=0219vS46zgKaqiljNzw83Vlk#wechat_redirect
5、京东数据驱动下的个性化推荐(附PPT)http://mp.weixin.qq.com/s?__biz=MjM5MDE0Mjc4MA==&mid=402831658&idx=1&sn=099ea0a449fd084fbd119b6d870191ec&scene=0#wechat_redirect 雷澍
6、下厨房数据丢失事故回顾与总结http://os.51cto.com/art/201307/402038.htm-黑夜路人
7、浅谈 PHP 与手机 APP 开发,以前转的一偏文章,自己又改了一些东西,http://www.itlipeng.cn/?p=707 蜗牛
8、优秀API设计的十大原则http://www.itlipeng.cn/?p=715 蜗牛 
9、What is the best way of session management in REST architecture? https://www.quora.com/What-is-the-best-way-of-session-management-in-REST-architecture tiyee

使用PHP开发App接口的一些体会相关推荐

  1. appcontroller.php,php用什么开发app接口

    可以使用 REST模式 来开发 App 接口,首先建立一个公共控制器,再建其他控制器继承它即可. 确定好返回的数据内容格式及信息码: (推荐学习:PHP视频教程)<?php // App接口公共 ...

  2. PHP开发APP接口(二)

    这里将会调用前面博客的数据库连接单例.文件缓存类和开发APP接口(一) [php] view plain copy  print? <?php // http://app.com/list.ph ...

  3. php开发APP接口 接收客户端的图片

    php开发APP接口 接收客户端的图片 header( "Content-Type: image/jpeg" ); $filename = time(). '.png' ; $st ...

  4. php app接口开发,「PHP开发APP接口实战005」基础示例接口的实现一

    前一章,我们对接口参数基本定义做了一个简要说明.里面提到了几个示例接口,接下来,我们就来讲解这个几点个示例接口的具体实现. 「PHP开发APP接口实战004」基础响应参数说明 前言 由于我们的接口返回 ...

  5. php app接口id参数类型过滤,PHP开发APP接口---返回数据的封装类

    /** * app返回数据类 * 1.接受多维,缺少键名的数组, * 2.可由输入的format参数决定返回数据格式 * 例子:Response::show(200, 'success', $data ...

  6. PHP开发APP接口全过程(一)

    1.学习要点: 服务器端 –> 数据库|缓存 –>调用接口 –>客户端 2.APP接口介绍:(PHP开发APP接口) PHP面向对象的接口:抽象类,interface定义 ==> ...

  7. php开发APP接口(一)

    php开发APP接口(一) 使用PHP来生成APP接口数据是非常简单的,如果你还不了解PHP没有关系,只需要看过PHP的基本语法,再看本示例就可以了. APP接口一般都是json格式(当然也有少数xm ...

  8. php接口调用实例源代码,小蚂蚁学习APP接口开发(7)—— APP接口实例——读取缓存方式开发APP接口的代码案例...

    从数据库中直接读取数据,虽然时效性很强,但是对数据库造成很大压力,尤其是在高访问量的情况下.这时候可以通过缓存,来有效的缓解了这一压力,虽然时效性有些不足,但是服务器的抗压能力却达到了很大的提高. 读 ...

  9. php 面向接口,php开发app接口

    一.app接口简介:与PHP面向对象的接口不同,是通信接口地址 1.条件: 1)接口地址 2)接口文件 3)接口数据 2.如何通信 1)类似BS模式 3.客户端app通信格式区别:xml和json 1 ...

最新文章

  1. P4269 [USACO18FEB]Snow Boots G
  2. thinkphp5项目--企业单车网站(七)
  3. Maria数据库怎么复制到mysql_maria(mysql)的主从复制
  4. leetcode算法题--机器人的运动范围
  5. 2019河北省大学生程序设计竞赛(重现赛)B 题 -Icebound and Sequence ( 等比数列求和的快速幂取模)...
  6. lintcode 有效的括号序列
  7. 由Java说起:编程语言还需要开源吗?
  8. MySQL时间段查询,无数据补0
  9. 【跃迁之路】【712天】程序员高效学习方法论探索系列(实验阶段469-2019.2.2)...
  10. 想搞一套AI问答游戏系统?简单,Google又开源了
  11. 浅谈Eclipse dropins插件安装的坑(附m2e的各个版本插件下载)
  12. 希尔加密法matlab,希尔密码加密解密
  13. linux串口结构termios,Termios--串口设置
  14. centOS安装libX11
  15. 单反光圈、快门和感光度的关系
  16. 怎样拍摄全景照片?全景图片拍摄流程
  17. 微信公众号调起扫码功能
  18. 关于c3p0报错:An attempt by a client to checkout a Connection has timed out
  19. 新装电脑系统,会自动安装乱七八糟的软件问题处理法
  20. 变更后的微软365服务器,从Exchange2010迁移Office365混合部署(5)

热门文章

  1. 工具类 | 集合工具类Collections介绍
  2. Redis存取对象集合
  3. ESP32 WIFI MESH学习笔记9-百度IOT接入(服务器部分)
  4. 记忆术和导图,激发强大记忆潜能
  5. Windows命令行删除文件和文件夹
  6. Mac:TexStudio 插入图片
  7. Qt QFile文件操作详解
  8. 数据库的乐观锁和悲观锁
  9. 一篇知晓-内存竟被”无意“破坏,真相究竟如何?
  10. 小白欢乐多——记ssctf的几道题目