热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP开发App接口的一些心得

PHP写接口的一些注意事项和心得体会,大部分参考别人的一些建议。文档要写周全,需要的每个字段,规定是什么类型,什么含义要标柱清楚,写完接口后自己先测试一下是否通过,不要直接扔给测试或者开发,然后反应错误了在进行修改接口要做到小,同时比较多,切记一个接口的代码量很多。

PHP写接口的一些注意事项和心得体会,大部分参考别人的一些建议。

  1. 文档要写周全,需要的每个字段,规定是什么类型,什么含义要标柱清楚,写完接口后自己先测试一下是否通过,不要直接扔给测试或者开发,然后反应错误了在进行修改

  2. 接口要做到小,同时比较多,切记一个接口的代码量很多。做到接口要小而多,不要做大而全,以方便减少服务器的压力

  3. 在做app接口的返回值的数据类型时需要注意,弱语言和强语言的处理数据类型毕竟不同,比如空数组的返回至少要初始化一个,这样可以让一些客户端处理起来方便,而不会因为一些数据的不正常造成 crash,还有就是错误返回的标准统一周全,以及返回适当的错误提示

  4. 当数据库里的字段发生变更时,要及时更新文档,并和使用到的程序员和测试人员说一声

  5. 接口的测试(如果是Node.Js / MongoDB 的搭配,也可以弄个自动化测试),测试要包含所有的返回情况,接口的规范,可以遵循 restful l 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、远程接口设计经验分享 :

选大公司还是小公司#wechat_redirect

2、怎样沟通升职快?#wechat_redirect

3、json_encode中文unicode的问题 崔洪波

4、MySQL 在大型网站的应用架构演变#wechat_redirect

5、京东数据驱动下的个性化推荐(附PPT)#wechat_redirect雷澍

6、下厨房数据丢失事故回顾与总结黑夜路人

7、浅谈 PHP 与手机 APP 开发,以前转的一偏文章,自己又改了一些东西,蜗牛

8、优秀API设计的十大原则蜗牛

9、What is the best way of session management in REST architecture?


推荐阅读
  • 于2012年3月份开始接触OpenStack项目,刚开始之处主要是与同事合作共同部署公司内部的云平台,使得公司内部服务器能更好的得到资源利用。在部署的过程中遇到各种从未遇到过的问题 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 本文讨论了在使用PHP cURL发送POST请求时,请求体在node.js中没有定义的问题。作者尝试了多种解决方案,但仍然无法解决该问题。同时提供了当前PHP代码示例。 ... [详细]
  • 1.Listener是Servlet的监听器,它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作,比如监听在线的用户的数量。当增加一个HttpSession时 ... [详细]
  • PHP输出缓冲控制Output Control系列函数详解【PHP】
    后端开发|php教程PHP,输出缓冲,Output,Control后端开发-php教程概述全景网页源码,vscode如何打开c,ubuntu强制解锁,sts启动tomcat慢,sq ... [详细]
  • 数据库技术:execute immediate
    首先在这里发发牢骚,指责下那些刻板的书写方式,不考虑读者理不理解,感觉就是给专业人员用来复习用的一样,没有前戏,直接就高潮,实在受不了!没基础或基础差的完全不知道发生了什么,一脸懵 ... [详细]
  • 3年半巨亏242亿!商汤高估了深度学习,下错了棋?
    转自:新智元三年半研发开支近70亿,累计亏损242亿。AI这门生意好像越来越不好做了。近日,商汤科技已向港交所递交IPO申请。招股书显示& ... [详细]
  • OWASP(安全防护、漏洞验证工具)开放式Web应用程序安全项目(OWASP,OpenWebApplicationSecurityProject)是一个组织 ... [详细]
  • 前言:原本纠结于Web 模板,选了Handlebars。后来发现页面都是弱逻辑的,不支持复杂逻辑表达式。几乎要放弃之际,想起了Javascript中eval函数。虽然eval函 ... [详细]
  • JavaScript和Python是用于构建各种应用程序的两种有影响力的编程语言。尽管JavaScript多年来一直是占主导地位的编程语言,但Python的迅猛发展有 ... [详细]
  • DAO设计模式(九)_1.设计分层初步 ... [详细]
author-avatar
罢脑货_246
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有