专栏首页喵了个咪的博客空间phalapi-入门篇6(小技巧和浅谈API适用范围以及入门篇总结)

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 条评论
登录 后参与评论

相关文章

  • PhalApi-Image -- 图像处理

    #PhalApi-Image -- 图像处理 ? ##前言 因为在工作中遇到了需要按照尺寸压缩上传图片,进过了一番寻找发现ThinkPhP图形处理能够满足大部分...

    喵了个咪233
  • PhalApi-SMS基于PhalApi容联云短信服务器拓展

    #PhalApi-SMS基于PhalApi容联云短信服务器拓展 ? ##前言 在做项目时更换短信运营商时,找到了容联云通讯(滴滴用的是他的服务),感觉很不错看了...

    喵了个咪233
  • EMQ百万级MQTT消息服务(介绍和搭建)

    先上节了解完MQTT之后我们需要选择一个MQTT服务端,在MQTT官方推荐下找了找最后选择了使用EMQ来进行服务端实现,EMQ有什么优势可以在官方推荐的那么多的...

    喵了个咪233
  • Jmeter 常用函数(22)- 详解 __intSum

    https://www.cnblogs.com/poloyy/p/13291704.htm

    小菠萝测试笔记
  • win32进程概念之句柄表,以及内核对象.

    我们知道.我们使用CreateProcess 的时候会返回一个进程句柄.以及线程句柄. 其实在调用CreateProcess的时候.内核中会新建一个EPROCE...

    IBinary
  • win32进程概念之句柄表,以及内核对象.

    我们知道.我们使用CreateProcess 的时候会返回一个进程句柄.以及线程句柄. 其实在调用CreateProcess的时候.内核中会新建一个EPROCE...

    用户3128588
  • PyTorch还是TensorFlow?这有一份新手指南

    问耕 编译整理 量子位 出品 | 公众号 QbitAI 前几天,量子位发过一篇《忽悠VC指南》。其中有一条建议是,当你假装AI专家时,最好别谈众人皆知的Tens...

    量子位
  • mac下lua快速搭建

    SeanDepp
  • WebView流程分析(上)

    断断续续调试好几天,才把X5WebView的整体流程大概了解清除。本篇是上篇,侧重于讲java层的逻辑。

    龙泉寺扫地僧
  • 狂欢结束,近视三度 --- 关于Maven旧版本1.0.2与1.1中设置本地仓库三种方法 博客分类: Java mavenWindowsX

    我们知道Maven 2.X可以通过修改%MAVEN_HOME%\conf\settings.xml文件来设置本地仓库存储路径,如下:

    阿敏总司令

扫码关注云+社区

领取腾讯云代金券