PhalApi开源接口框架

读音:派框架,官网:https://www.phalapi.net/

PhalApi是一个PHP轻量级开源接口框架,致力于快速开发接口服务。支持HTTP/SOAP/RPC等协议,可用于搭建接口/微服务/RESTful接口/Web Services。承诺永久免费,可用于商业用途。

它支持自动生成接口文档、自动进行参数校验、自动生成单元测试代码、自动拥有CURD数据接口、自动安装程序,让接口开发更简单、更高效、更专业。

PhalApi官网截图:

在线示例

使用PhalApi开源接口框架,能快速开发编写你的API接口,并能自动生成在线接口文档。

在线示例:

  • 在线接口文档:http://demo.phalapi.net/docs.php
  • 接口详情文档(以默认接口为例):http://demo.phalapi.net/docs.php?service=App.Site.Index&detail=1&type=fold
  • 默认接口服务:http://demo.phalapi.net/?s=App.Site.Index

PhalApi会根据你编写的接口的参数配置和代码注释,自动实时生成在线接口文档。接口列表页效果类似如下:

PhalApi还支持在线接口测试、请求示例说明、生成离线版HTML接口文档、实时更新。接口文档详情页效果类似如下:

快速安装

composer一键安装

使用composer创建项目的命令,可实现一键安装。

$ composer create-project phalapi/phalapi

温馨提示:关于composer的使用,请参考Composer 中文网 / Packagist 中国全量镜像。

手动下载安装

或者,也可以进行手动安装。将此Git项目代码下载解压后,进行可选的composer更新,即:

$ composer update

部署

Nginx配置

如果使用的是Nginx,可参考以下配置。

server {listen 80;server_name dev.phalapi.net;# 将根目录设置到public目录root /path/to/phalapi/public;charset utf-8;location / {index index.php;}location ~ \.php$ {fastcgi_split_path_info ^(.+\.php)(/.+)$;# 根据当前环境,选择合适的通讯方式# fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;include fastcgi_params;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;}
}

配置时需要将网站根目录设置到public目录,配置保存后重启nginx。

温馨提示:推荐将访问根路径指向/path/to/phalapi/public。

数据库配置

如何使用的是MySQL数据库,参考修改./config/dbs.php数据库配置。

return array(/*** DB数据库服务器集群 / database cluster*/'servers' => array('db_master' => array(                       // 服务器标记 / database identify'type'      => 'mysql',                 // 数据库类型,暂时只支持:mysql, sqlserver / database type'host'      => '127.0.0.1',             // 数据库域名 / database host'name'      => 'phalapi',               // 数据库名字 / database name'user'      => 'root',                  // 数据库用户名 / database user'password'  => '',                      // 数据库密码 / database password'port'      => 3306,                    // 数据库端口 / database port'charset'   => 'UTF8',                  // 数据库字符集 / database charset'pdo_attr_string'   => false,           // 数据库查询结果统一使用字符串,true是,false否'driver_options' => array(              // PDO初始化时的连接选项配置// 若需要更多配置,请参考官方文档:https://www.php.net/manual/zh/pdo.constants.php),),),// 更多代码省略……
);

最后,需要给runtime目录添加写入权限。

运行和使用

调用接口

在PhalApi,你可以通过service参数(短名字是s参数)指定需要调用的接口服务。例如,访问默认接口服务。

http://dev.phalapi.net/?s=App.Site.Index

接口请求后结果输出类似如下:

{"ret": 200,"data": {"title": "Hello PhalApi","version": "2.4.2","time": 1501079142},"msg": ""
}

对应执行的PHP代码在./src/app/Api/Site.php文件,源码片段如下:

<?php
namespace App\Api;
use PhalApi\Api;/*** 默认接口服务类* @author: dogstar <chanzonghuang@gmail.com> 2014-10-04*/
class Site extends Api {public function getRules() {return array('index' => array('username'  => array('name' => 'username', 'default' => 'PhalApi', 'desc' => '用户名'),),);}/*** 默认接口服务* @desc 默认接口服务,当未指定接口服务时执行此接口服务* @return string title 标题* @return string content 内容* @return string version 版本,格式:X.X.X* @return int time 当前时间戳* @exception 400 非法请求,参数传递错误*/public function index() {return array('title' => 'Hello ' . $this->username,'version' => PHALAPI_VERSION,'time' => $_SERVER['REQUEST_TIME'],);}
}

运行效果,截图如下:

自动生成的接口文档详情页局部截图如下:

翻译

修改./public/init.php文件,可设置当前语言。

// 翻译语言包设定-简体中文
\PhalApi\SL('zh_cn');// Setting language to English
\PhalApi\SL('en');

一张图告诉你如何使用PhalApi 2.x

PhalApi开发文档

专为PHPer准备的优雅而详细的开发文档,基本都能在文档找到你要的答案,请看:PhalApi 2.x 开发文档,http://docs.phalapi.net/#/v2.0/。

文档使用markdown编写,文档页面截图如下:

开发文档大纲:

PhalApi 2.x 开发文档前言前言如何升级PhalApi?一、快速开发1.1下载与安装1.2 运行Hello World1.3 如何请求接口服务1.4 接口响应与在线调试1.5 Api接口层1.6 DataApi通用数据接口1.7 Domain领域层与ADM模式1.8 Model数据层与数据库操作1.9 DataModel数据基类1.10 单元测试1.11 自动加载和PSR-41.12 接口文档1.13 初始化二、数据库2.1 数据库连接2.2 数据库与NotORM2.3 数据库使用和查询2.4 数据库分库分表策略2.5 连接多个数据库2.6 打印和保存SQL语句2.7 定制你的Model基类三、高级专题3.1 接口参数3.2 配置3.3 日志3.4 缓存3.5 过滤器(接口签名)3.6 COOKIE3.7 加密3.8 国际化3.9 CURL请求3.10 工具和杂项3.11 DI服务汇总3.12 扩展类库3.13 SDK包的使用3.14 脚本命令3.15 MQ队列3.16 错误处理

2020视频教程

B站首发,第一课~第十一课,配套有每节课的视频知识点大纲。

http://docs.phalapi.net/#/v2.0/video_1

视频课程:

    PhalApi 2020视频教程第一课 B站首发,2020视频教程开讲啦!第二课 视频教程 - 下载和安装第三课 视频教程 - Hello World第四课 视频教程 - 如何请求接口服务第五课 视频教程 - 接口响应与在线调试第六课 视频教程 - Api接口层第七课 视频教程 - Domain领域业务层与ADM模式解说第八课 视频教程 - Model数据层与数据库连接第九课 视频教程 - 测试驱动开发与PHPUnit第十课 视频教程 - 自动加载和PSR-4第十一课 视频教程 - 接口文档视频教程 - 十分钟体验PhalApi Pro,让PHP接口开发更有趣!视频教程 - 茶店应用实战

相关书籍

电子书:《初识PhalApi:探索接口服务开发的技艺》

作者:黄禅宗

图灵社区链接:
https://www.ituring.com.cn/book/2405

大纲:

献词
前言
第一部分 探索
第1章 遇见PhalApi
第2章 基础入门
第3章 高级主题
第4章 不只是编码
第二部分 项目案例
第5章 全新的创业项目
第6章 重写历史遗留项目
第7章 一个极致的项目
第三部分 再进一步
第8章 PhalApi完美诠释
第9章 如何有效设计接口框架
第10章 开源这条路
附录A 接口服务文档模板
致谢

电子书:《良质!PHP企业级系统开发》

作者:黄禅宗

图灵社区链接:
https://www.ituring.com.cn/book/2664

大纲:

推荐序
前言
献辞
第一部分 重新定义项目开发
第 1 章 软件开发本质论
第 2 章 选择高起点
第 3 章 向世界发布你的代码
第二部分 PHP高级编程
第 4 章 回归原生态
第 5 章 PHPUnit单元测试新解
第三部分 PHP企业级系统开发
第 6 章 核心基础模块设计
第 7 章 大型网站开发范式
第 8 章 高可用接口服务系统
第 9 章 极致的管理后台系统
第 10 章 深藏不露的计划任务系统
第四部分 追求卓越
第 11 章 如何成为明星员工
第 12 章 赢在角色转换
致谢

子项目

如果对PhalApi开源框架的内部实现、源代码和技术架构感兴趣,可以查看以下子项目。

  • phalapi/kernal框架内核
  • phalapi/notorm数据库包

PhalApi 2.x 版本的系统架构如下:

PhalApi composer 扩展

  • phalapi/authAuth权限扩展
  • phalapi/cliCLI扩展类库
  • phalapi/fast-routeFastRoute快速路由
  • phalapi-aliyun-ossPhalApi-OSS阿里云OSS包
  • phalapi/PHPMailer基于PHPMailer的邮件发送
  • phalapi/qiniu七牛云存储接口调用
  • phalapi/qrcodePhalApi 二维码扩展
  • phalapi/pinyinPhalApi 2.x 拼音扩展
  • phalapi/jwt基于PhalApi2的JWT拓展
  • chenall/phalapi-weixin微信扩展
  • phalapi/wechatmini微信小程序扩展
  • phalapi/ding-com-bot钉钉企业内部webhook机器人扩展
  • phalapi-pay支持微信支付和支付宝支付

温馨提示:以上扩展需要先通过composer安装再使用。更多扩展类库的使用和开发,请参考文档:PhalApi框架扩展类库:http://docs.phalapi.net/#/v2.0/library。

PhalApi应用插件

  • 运营平台插件
  • 应用用户插件
  • 加密解密插件
  • 支付宝插件
  • 茶店微信小程序应用
  • 在线接口文档主题包

温馨提示:应用插件和composer扩展的区别在于,应用插件颗粒度更大,功能更具体,可能不仅有数据库、接口、界面、还可能配合其他终端,并且不受composer的规范约束,是PhalApi自主发明和设计的开发方式。更多请参考:第三方应用插件开发教程:http://docs.phalapi.net/#/v2.0/how-to-dev-plugin。

基于PhalApi开发的技术产品

以下产品均使用了PhalApi开源框架,并为官方自主研发的产品,欢迎个人/团队/企业使用。

接口大师-即刻搭建您的接口开放平台(原名:PhalApi专业版)

产品官网:http://pro.phalapi.net/

果创云-后端低代码开发平台

产品官网:http://yesapi.cn/

YesDev协作云-在线协作你的全部项目

产品官网:https://www.yesdev.cn/

PhalApi 2.x 版本完美诠释

2.x 版本系统架构

主要分为三层:

  • phalapi/phalapi 项目应用层,可使用phalapi/phalapi搭建微服务、接口系统、RESTful、WebServices等。
  • 扩展类库 扩展类库是指可选的、可重用的组件或类库,可以直接集成使用,由广大开发人员维护分享,对应原来的PhalApi-Library项目。
  • 核心框架 分别两大部分,PhalApi核心部分kernal,以及优化后的notorm。

其中,各自的composer和github项目分别是:

项目

composer

github

phalapi/phalapi

phalapi/phalapi

phalapi/phalapi

扩展类库

由广大开发人员共同维护、分享,composer建议统一注册到phalapi。

由广大开发人员共同维护、分享,源代码可维护在开发者各自的Github仓库。

核心框架

phalapi/kernal

phalapi/kernal

框架核心部分UML静态结构图

PhalApi 2.x 版本的核心框架部分的UML静态结构图,高清版如下所示:

首先,绿色部分的PhalApi\PhalApi类是整个接口系统的访问入口,也就是项目应用系统、客户端使用的关键所在。相关的调用代码,可以参考统一入口文件的实现代码片段。

$pai = new \PhalApi\PhalApi();
$pai->response()->output();

只需要两行代码,便可完成对接口服务的请求响应。

其次,是黄色部分的Api、Domain和Model这三层,也就是我们常说的ADM分层架构。这部分,需要开发人员关注,因为这也是具体项目开发需要自己实现的部分。

最后,是红色部分的DI依赖注入,也是整个框架的核心所在。不仅在核心框架中使用频率最高,乃至在项目应用中也会经常被用到。

核心执行流程时序图

PhalApi 2.x 版本的核心执行流程时序图,与1.x 版本基本一致,可以看出,不管技术如何升级,PhalApi的最初的核心时序流程仍保持着活力。唯一变化的是各个类名。

社区沟通

派框架-PhalApi交流群-QQ群(1165人)

群号:421032344

派框架-PhalApi交流群2-QQ群(830人)

群号:459352221

PhalApi技术交流群-微信群(83人)

添加微信号:dogstarhuang 进群

代码仓库

Gitee码云 - PhalApi开源接口框架(1.7k Star)

代码链接:
https://gitee.com/dogstar/PhalApi

Github - PhalApi开源接口框架(1.4 Star)

代码链接:
https://github.com/phalapi/phalapi

版本更新

2021年7月发布更新了 PhalApi 2.17.2 版本。

PhalApi 2.17.2 版本

[BUG修复]

1、SQL记录,只提取部分必要的参数,避免全部记录,以及避免记录密码等敏感信息到日志文件

2、翻译和DataApi参数说明补充

3、DataModel调用不存在方法时的异常提示信息,去掉多余的美元符号

4、在线接口文档模板判断调整,避免出现warning

更多历史版本更新日记,请查看:

http://docs.phalapi.net/#/v2.0/changelog

人人都是接口开发大师,这个开源项目花5分钟就可以开发一个API接口相关推荐

  1. 为什么将表格的method改为post后就无法工作_不用再等后端的接口啦!这个开源项目花 2 分钟就能模拟出后端接口...

    本文作者:HelloGitHub-嘉文 这里是 HelloGitHub 推出的<讲解开源项目>系列,今天给大家带来一款开源免费的模拟后端 API 的工具:moco 没学过后端开发的也能快速 ...

  2. 不用再等后端的接口啦!这个开源项目花 2 分钟就能模拟出后端接口

    HelloGitHub-嘉文 这里是 HelloGitHub 推出的<讲解开源项目>系列,今天给大家带来一款开源免费的模拟后端 API 的工具:moco 没学过后端开发的也能快速上手这个开 ...

  3. 开源项目: 揭秘10分钟如何搞定开发部署全流程!

    关注+星标公众号,不错过精彩内容 来源 | 百度飞桨 想要应用AI技术进行产业智能化升级,又担心缺乏计算机.数学等理论基础? AI算法训练完成,优化部署上线又是一个趟不过去的大坑? 别担心,今天就教大 ...

  4. 开源!!!100多个常用API接口免费分享!建议收藏!

    作者 : ishxiao原文:blog.csdn.net/ishxiao/article/details/53839061 我们在开发的过程中,常常调用API接口,往往事半功倍.今天给大家整理了优秀的 ...

  5. 视频教程-AI拍照识花小程序云开发,无需调用后台接口,上线你的识花小程序-微信开发

    AI拍照识花小程序云开发,无需调用后台接口,上线你的识花小程序 五年互联网实战开发经验,全栈工程师,熟悉主流前端开发技术,js,vue等,后端技术方向在python,node,曾先后就职于阿里云,阿里 ...

  6. 推荐一个api接口监控神器

      大家好,我是为广大程序员兄弟操碎了心的小编,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加班不熬夜不掉头发,是我的目标!   今天小编推荐一个api接 ...

  7. 多多客api_编写一个API接口,到底有多多多多多多多简单?

    这里所介绍的API接口 这里所介绍的API接口,主要是指通过HTTP协议调用,提供给客户端应用调用,并以JSON格式返回数据的接口. 编写API接口的最佳方式 编写API接口代码,开发一款API接口, ...

  8. [js] 一个api接口从请求数据到请求结束共与服务器进行了几次交互?

    [js] 一个api接口从请求数据到请求结束共与服务器进行了几次交互? API是一些预先定义的函数,或指软件系统不同组成部分衔接的约定.如果已经建立了连接,那么单次请求数据到请求结束应该是一次交互:如 ...

  9. java项目构建ant_Ant - 项目构建 - 开发工具 - JAVA开源项目 - 开源吧

    相关开源项目 Gradle: Gradle是一个基于Groovy的构建工具,它使用Groovy来编写构建脚本,支持依赖管理和多项目创建,类似Maven,但比之简单轻便.为Ivy提供了一个layer,提 ...

最新文章

  1. 好玩的东西——一个代码片段
  2. 配置文件加载位置||外部配置加载顺序||自动配置原理
  3. C语言博客作业05--指针
  4. ❤️ 爆肝一个月!JAVA零基础入门总结(上)❤️
  5. Vue生产环境调试的方法
  6. windows7原版iso镜像_一定收藏,常用操作系统原版下载地址整理,Win7 Win10 Deepin...
  7. Spring课程 Spring入门篇 总结
  8. 【UIKit】键盘设计2
  9. matlab生成西门子plc源文件,【图】西门子step7功能块的属性及生成源文件的步骤...
  10. MergeSort(C++)
  11. 苹果桌面主题_看腻了手机自带的桌面主题,试试这个
  12. 阿里巴巴历年经典面试题汇总:Java岗
  13. 洛谷:P2525 Uim的情人节礼物·其之壱
  14. 现代控制理论课程实验一:线性系统状态空间分析与运动解
  15. 为Notepad++配置C/C++、C#、Java、Python编译环境
  16. 如何申请域名和购买服务器?
  17. git 查看当前仓库地址以及设置新的仓库地址
  18. 计算机图像图形设计制作 步骤,第三章  威尔克姆教程:图形的专门制作方法...
  19. android动态显示数字,2018-09-26【Android仿微信未读消息数提示数字之BadgeView的使用】...
  20. 微信 服务器配置 菜单,微信菜单配置

热门文章

  1. 数据结构入门:计算算法的平均时间复杂度
  2. 淘宝天猫抓包评论地址
  3. jmeter并发测试教程_JMeter压力测试并发测试(入门篇)
  4. C语言String类型小结
  5. 数据中心网络高可用架构
  6. java的双亲委派模型-附源码分析
  7. 独秀日记:刚抱了*冰冰睡觉一个星期,就开始想*子怡了
  8. 90后职业新选择:25岁刚入行软件测试,也可以拿这么多薪资
  9. 为应用程序池 'DefaultAppPool' 提供服务的进程关闭时间超过了限制
  10. KVC和KVO简单的区别