学习与目标
API 的工程化建设及 API 性能
- 如何对 API 项目中的公共技术抽离,建立有层级的 PHP API 项目
- 如何做好异常处理及监控,保障 API 高效稳定地提供服务
- 如何进行 API 性能测试
- 如何定位性能瓶颈
- 如何解决接口 QPS TPS 问题
PHP 常规实现的基本 API
- 用户登录注册接口
- 文章类别接口
- 一些接口实现方法
- 邮件接口
第三方能力的整合系列接口
- 短信发送
- Push 消息
- IP 地址转换
- 支付
- 其他
Yaf 框架的优点
- 功能足够精简
- 性能足够优秀
- 适合做 API 层开发
- 适合用 PHP 硬编码实现
- 学习收获
- 掌握 Restful API 接口的实现方法
- 学习更多 PHP 基本语法、基本库的使用
- 能够了解 API的分层实现方法
- 与前端解耦,并行开发
- 学会工程化抽离整理代码能力
- 提升 API 性能问题的定位分析与解决能力
API 基础知识讲解
- API 是无状态性的
- API 的有状态性的实现方法
- Session Cookie 实现
- Json Web Token 实现
- REST 与 SOAP、RPC 的区别
- RPC 所谓的远程过程调用(面向方法)?
- SOAP 所谓的面向服务的架构(面向消息)?
- REST 所谓的面向资源?
周边知识与工具
- API 常用传输格式:JSON
- JSON 的可视化工具
- API 调试工具:Postman
Yaf 框架
- Yaf 的安装
- wget “安装地址”
- tar zxvf 安装包.tgz
- phpize
- ./configure –with-php-config=php-config
- make
- make test
- make install
Yaf Codes Generator1php yaf_cg Sample
一些思考
- 如何防止机器恶意注册与机器模拟用户登录
- 提交特殊参数
- 实现网站验证码
- 如何实现密码找回功能
- 如何实现数据分页效果
- 如何收集发送出去的邮件的送达效果
- 短信发送成功对账实现
- 批量短信通知的场景如何高效发送
- 在不能完全识别 IP 地址的时候如何做降级方案
文章类接口的实现
- 文章信息的 CRUD
- 让一个 API 接口做更多的事情
- 文章类接口通用功能:分页功能的实现
Push 服务
- 小米 Push
- 华为 Push
- 个推
- 极光推送
IP 地址转换接口
- 黑白名单
- 访问来源统计
- 小流量线上验证
API 接口的提炼
- API 自测脚本
- 作用
- 项目部署上线前,验证调成过的项目代码
- 有利于新的团队成员快速去了解代码功能
- 安装
- composer require curl/curl
- 作用
- API 公共 Lib 的抽离
- SDK 抽离
- Composer 管理
- 建立数据操作层 DAO
- 接口异常时的处理规范
- 统一的 API 接口返回 - 错误信息字典
- 统一的 API 异常处理 - 容错与降级
- API 功能的整合
- API 文档
- PHPDocumentor
API 接口的性能
- 接口性能信息收集
- 关注接口的整体时间开销
- grep ‘log_format’ ./ -r
- Xhprof 收集 API 接口开销
- 关注接口的整体时间开销
- API 时间开销定位与分析
- API 上下游性能优化
- MySQL 性能分析
- 后端服务调优
- 短信
- 邮件
- 微信推送
- API 返回调优
- API 服务稳定性 SLA
- 服务监控
- supervisor
- supervisor 配置和使用
- find / -name ‘supervisord.conf’
- API 负载均衡
- 服务报警
- 服务监控