phalapi-入门篇6(小技巧和浅谈API适用范围以及入门篇总结)

#phalapi-入门篇6(小技巧和浅谈API适用范围以及入门篇总结)#

##前言## 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架.

本篇文章的目的在于把框架自带的一些好用,封装好的一些方便开发的类库简单的说一下,灵活使用可以提高开发效率,再就是因为在交流过程中有很多童鞋提出了一些关于什么样的项目怎么用API和web端怎么使用API这类的问题,我就我的理解把我的一些想法和大家交流一下,最后是对于入门篇做一下总结,以及对后面的一些教程做一下说明.

附上:

官网地址:http://www.phalapi.net/

开源中国Git地址:http://git.oschina.net/dogstar/PhalApi/tree/release

##1. 小技巧##

在这里介绍的是一些比较基础是比如curl,log,和tools着一些基础的,关于cache,Cookie等一些会在后面进阶篇慢慢道来

###1.1 curl请求类###

其实在框架内部已经提供了Curl的请求类位置是在**/Phalpi/Phalapi/CUrl.php**

// 构造方法接受参数为失败重试次数默认是1可以自己指定
$curl = new PhalApi_CUrl(2);

// 进行GET 返回请求结果
$rs = $curl->get('http://phalapi.oschina.mopaas.com/Public/demo/?service=Default.Index');

// 进行POST 返回请求结果
$data = array('username' => 'dogstar');
$rs = $curl->post('http://phalapi.oschina.mopaas.com/Public/demo/?service=Default.Index', $data);

###1.2 log日志类###

在大部分时候都没办法实时知道报错信息,但是如果发生了错误我们需要记录起来,来提供给自己日后分析,或者是在运营环境中有个问题但是自己不是很确定可以通过debug日志的形式写入文件进行分析,框架有提供这方面的功能,在接口init.php中已经有下面这段话了

//日记纪录
DI()->logger = new PhalApi_Logger_File(API_ROOT . '/Runtime', 
    PhalApi_Logger::LOG_LEVEL_DEBUG | PhalApi_Logger::LOG_LEVEL_INFO | PhalApi_Logger::LOG_LEVEL_ERROR);

这样就已经注册了日志类**API_ROOT . '/Runtime'**这个是表示日志存放的路径(一定要保证有写入权限才能正常使用)使用如下

//error 系统异常类
DI()->logger->error('fail to insert DB', $data);
//对应的LOG
2015-02-07 20:37:55|ERROR|fail to insert DB|{"name":"dogstar","password":"123456"}

//info 业务纪录类
DI()->logger->info('add user exp', array('name' => 'dogstar', 'before' => 10, 'addExp' => 2, 'after' => 12, 'reason' => 'help one more phper'));
//对应的LOG
2015-02-07 20:48:51|INFO|add user exp|{"name":"dogstar","before":10,"addExp":2,"after":12,"reason":"help one more phper"}

//debug 开发调试类
DI()->logger->debug('just for test', array('name' => 'dogstar', 'password' => '******'));
//对应的LOG
2015-02-07 20:37:55|DUBUG|just for test|{"name":"dogstar","password":"******"}

文件存放的文件路径一般为Runtime/log/201502(年月)/20150207(年月日).log

###1.3 tool工具类###

工具类的路径在**/Phalpai/Phalapi/Tool.php**中目前里面提供了两个工具(IP地址获取,随机字符串生成)使用方法入下,自己会经常使用的工具都可以放进去

//实例化工具类
$PhalApi_Tool = new PhalApi_Tool();

//生成一个"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"组成的一个随机字符串根据输入的值决定长度
$PhalApi_Tool->createRandStr(5);

//获取请求的IP这里的IP是外网IP
$PhalApi_Tool->getClientIp();

##2. 浅谈API适用范围##

其实想谈谈这个的原因是应为有人有疑问,Api适用范围是不是只局限于APP,还有就是如果是用 phalapi 提供一个后台管理的web项目的话要怎么去做,在这里根据一些笔者本人的一些肤浅的了解谈一谈我的认为,分一下几个场景进行说明.

###2.1 移动端###

我认为排在第一位的应该是移动应用比如Android和IOS上面的应用通讯肯定是需要使用到API通讯的(基本上是首选,很少有看到其他非接口形式的).

###2.1 提供服务(主要是平台类)###

提供服务(主要是平台类)比如银行来说,提供的支付接口,付款接口等,还有就是一些外卖平台,团购平台都有自己的一套接入API接受数据(这一些可能会偏向高端一点)

###2.1 长周期web项目###

长周期web项目,为什么要叫做长周期web项目,因为短期的项目比如5天的一个抽奖活动我是觉得实在没有必要去做成接口通讯的形式,这种短周期的项目直接拿着静态页面加上MVC框架去实现来的是划算一点(因为API和web通讯成本还是比较大的),对于长周期的项目来说使用API是有好处的如下:

1.前后端分离,后端提供API服务,前端进行请求展示,让前端专注做前端的事情,让后端专注做后端的事情.

2.升级迭代可以有效的减小维护成本,当迭代升级的时候,如果是后端没有变动,只是前端进行变动了可以很好的分开工作量.(前端一样)

3.分离之后规范更加清晰,API有API的一套完整的开发规范,前端也一样,就不会和MVC框架一样代码堆积在一个地方

4.高并发web项目优化目标准确,优化空间大,对于API来说就是可以单点优化.

当前也有他的缺点,前期工作量会有所增加,沟通成本增加,但是我认为他带来的好处是持续的

还有一个重点就是怎么实现通讯,我现在在项目中前端是使用js进行请求通讯的,这是比较常用的,还有一种设想PHP提供接口,然后node.js或者其他语言进行请求然后渲染出html代码给到前端进行展示,这样可以解决安全问题,而且node.js不需要进行数据操作性能也是非常好的.

##3. 入门篇总结##

经过了一个月交流入门篇也就在这里结束了,在入门篇里面吧一些关于Phalapi的基本使用方式都过了一遍,我也希望大家能动手都操作一遍,当如入门篇讲的是比较基础的东西,经验老到的童鞋过一过就行了,在后面的进阶篇里面跟过的会讲到概念和思想性的东西,比如DI思想单例模式,三层的好处等,而在实战篇中会着重讲解如何运用到实际开发中,怎么多项目共用框架等一些比较实际的一些教程,也希望大家能够进一步关注,再一次感谢喜欢Phalapi框架的你们,你们的关注就是我的动力!

注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!

官网QQ交流群:421032344 欢迎大家的加入!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏嵌入式程序猿

不按标准引发的bug

我们曾经在初级和中级培训中给大家详细讲解了Modbus通讯的开发,并多次强调了一定要按照标准协议的要求编写Modbus驱动程序,可是现实中仍然有很多工程师不按照...

2938
来自专栏Kirito的技术分享

解读「框架设计原则」

1 模块分包原则 2 框架扩展原则 3 领域划分原则 4 接口分离原则 5 组件协作原则 6 功能演进原则

1474
来自专栏嵌入式程序猿

感谢NXP的KSDK神器,轻松学习freeRTOS

在上次的公众号推送文章里,我们简单介绍了下单独的freeRTOS在kinetis K60上的例程分析和移植提示,今天我们看看如果是KSDK和freeRT...

4025
来自专栏IMWeb前端团队

babel

原文http://jiangyuan.me/blog/2016/08/13/babel/

2519
来自专栏java一日一条

在 Visual Studio 上更好开发 Python 的六大功能!

Visual Studio 2013/2015 搭配 Python Tools for Visual Studio 扩充套件让 Visual Studio 能提...

1001
来自专栏IMWeb前端团队

聊聊http/2

本文作者:IMWeb 九月 原文出处:IMWeb社区 未经同意,禁止转载 随着web的发展,http/1.x 已经很难满足现在的需求,Google 因...

2267
来自专栏王清培的专栏

.NET应用架构设计—表模块模式与事务脚本模式的代码编写

要想正确的设计系统架构就必须能正确的搞懂每个架构模式的用意,而不是胡子眉毛一把抓。现在有一个现象是什么呢,项目的结构从表面上看是很不错,层分的很合理,其实对业务...

910
来自专栏Linux驱动

19.Linux-USB总线驱动分析

如下图所示,以windows为例,我们插上一个没有USB设备驱动的USB,就会提示你安装驱动程序 ? 为什么一插上就有会提示信息? 是因为windows自带了...

3838
来自专栏草根专栏

.NET Core TDD 前传: 编写易于测试的代码 -- 缝

举个例子, 如果一辆汽车在产出后没完成测试, 那么没人敢去驾驶它. 代码也是一样的, 如果项目未能进行该做的测试, 那么客户就不敢去使用它, 即使使用了也会遇到...

1197
来自专栏花叔的专栏

实践并解读最新的小程序码生成方式

花叔一看到这个新特性时就开始着手研究这特性怎么应用,经过一轮测试,终于有点成绩,来看看花叔的研究成果,希望对大家有用。

4346

扫码关注云+社区

领取腾讯云代金券