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

article/2025/10/22 19:15:28

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


http://chatgpt.dhexx.cn/article/PeY9FhQV.shtml

相关文章

php API接口入门

1.简述: api接口开发,其实和平时开发逻辑差不多;但是也有略微差异; 平时使用mvc开发网站的思路一般是都 由控制器 去 调用模型,模型返回数据,再由控制器把数据放到视图中,展现给用户; api开发是:使用控制器 去调用模型,模型返回数据,在有控制器 输出 json格式字符…

php开发之接口的使用

继承简化了对象&#xff0c;类的创建&#xff0c;增加了代码的可重性&#xff0c;但php只支持单继承&#xff0c;如果要实现多重继承&#xff0c;就要使用多个接口。 接口通过interface关键字来声明&#xff0c;并且类中只能包含未实现的方法和一些成员变量&#xff0c;格式如…

PHP开发APP接口注意事项

一、双方统一接口开发文档 为了提升开发效率及沟通方便&#xff0c;需要建立规范的开发文档。 一般保护接口的功能或页面、接口地址、接口参数、接口返回值等说明。 参考文档格式&#xff1a; 二、注意以下 分版本&#xff0c;为后面接口升级做好打算。提供密钥和token。…

YII2.0 接口开发步骤

新建表的model来操作表。 访问你本地站点的XXX/gii 即可打开。如果提示无法访问请自行修改config/web.php 文件下面的IP选项 $config[modules][gii] [class > yii\gii\Module,allowedIPs>[127.0.0.1,::1,"192.168.*", "自己定义自己的IP"],]; 这时候…

PHP开发微信商家转账到零钱接口

仔细阅读了微信接口文档并且参考网上的案例&#xff0c;完成了商家转账到零钱的接口开发&#xff0c;目前已在使用中 下面是完整代码&#xff1a; /*** notes 商家转账到零钱*/public static function transfer($withdrawApply,$userAuth,$config){//请求URL$url https://api…

php开发App接口

APP接口简介&#xff1a; 什么是app接口&#xff1f;app接口就是用服务端程序如php写好的脚本&#xff0c;以供app客户端请求而获得数据的一个东西。比如一个视频app的首页&#xff0c;肯定有一些视频列表&#xff0c;那么当你打开这个app时&#xff0c;这个封装在app里的这个首…

PHP对接抖音开发平台接口

一、说明二、代码三、代码运行需知四、功能扩展五、接口调用需要注意的点六、接口文档中的 坑&#xff08;以订单列表接口为例&#xff09;1、请求参数、响应参数 代表的具体值不清晰2、页码从第0页开始&#xff08;这个属于需要注意的点&#xff09;3、金额 是元 还是 分&…

PHP api接口开发

本人第一次使用PHP 开发API 1、第一步 开发框架&#xff1a;http://www.thinkphp.cn/down.html 本人下载 :ThinkPHP5.0.24核心版 需要先登陆 下载解压&#xff0c;放入phpstudy 的 网站根目录下&#xff1a;www文件&#xff0c;如下图&#xff1a; phpstudy 选择Apache&am…

PHP接口加密

在工作中PHP接口开发是PHP常见的技术&#xff0c;通过对接口进行一些操作&#xff0c;可以访问接口获取数据&#xff0c;给app/前端提供数据接口等,如果接口没有加密&#xff0c;很容易发生盗用和不安全的操作.下面介绍一下常见的接口加密方法。 一.使用token进行加密解密&…

php接口开发简单实例

刚刚写成人生第一个服务器接口&#xff0c;总结分享一下经验&#xff0c;没写过接口的可以看下。 这里以用户用id请求自己个人信息业务为例&#xff1a; <?php $id $_POST["user_id"]; if ($id ! 10086){exit(); }$userinfo array(username>jason,password…

如何用PHP编写简单的api数据接口

点击注册直接获取API数据 一、编写接口所需几样工具或软件&#xff08;均是win764位&#xff09; 1.phpStudy、SQLyog和编码工具&#xff08;sublime text/webStorm/vs code均可&#xff0c;按自己习惯来&#xff09;&#xff1b; 2.安装好phpStudy之后&#xff0c;打开软件…

PHP开发APP接口实现--基本篇

最近一段时间一直在做APP接口&#xff0c;总结一下APP接口开发以来的心得&#xff0c;与大家分享&#xff1a; 1. 客户端/服务器接口请求流程&#xff1a; 安卓/IOS客户端 –> PHP接口 –> 服务器端 –> 数据处理 –> 返回值&#xff08;客户端接收并处理&…

PHP服务器端API原理及示例讲解(接口开发)

直接获取API接口数据的方法点击获取 相信大家都做过PHP请求API接口获取数据&#xff0c;比如淘宝API&#xff0c;微信公众平台&#xff0c;天气查询&#xff0c;快递查询等&#xff0c;有的需要参照接口文档根据签名算法构造sign&#xff08;签名&#xff09;&#xff0c;或者设…

php开发APP接口(一)

php开发APP接口&#xff08;一&#xff09; 使用PHP来生成APP接口数据是非常简单的&#xff0c;如果你还不了解PHP没有关系&#xff0c;只需要看过PHP的基本语法&#xff0c;再看本示例就可以了。 APP接口一般都是json格式&#xff08;当然也有少数xml格式&#xff09;遵循re…

安卓ViewFlipper跑马灯效果

前言&#xff1a;ViewFlipper是一个切换控件&#xff0c;一般用于图片的切换&#xff0c;当然它是可以添加View的&#xff0c;而不限定只用于ImageView&#xff0c;当然我们也可以自定义View达到跑马灯效果。 效果&#xff1a; ①&#xff1a;MainActivity使用&#xff1a; …

CSS实现文字跑马灯效果

CSS实现文字跑马灯效果 在完成一个任务的时候&#xff0c;要求在表格中固定宽度的其中一个item文字过长需要滚动显示&#xff0c;然后经过多次效果的尝试&#xff0c;实现代码如下所示&#xff1a; 它需要一个外层包围盒&#xff0c;设置定宽、文字不换行以及超过隐藏子元素为…

html纵向的跑马灯效果,单行文字垂直/水平跑马灯效果

需求描述 接到的需求是这样的&#xff1a;跑马灯效果 一次展示一行文字 循环滚动 文字滚动到视野中停留一秒后滚出。 静态效果如下图&#xff0c;文字从下往上或者从右往左滚动&#xff0c;滚动到此位置时停留一秒(不会传动图... 网络上有比较多的多行文字循环滚动的demo,找了一…

Flutter-跑马灯效果实现

1、背景&#xff1a; 使用三方组件在首页做个跑马灯效果&#xff0c;隔一段时间首页会闪一下&#xff0c;估计是三方组件有内存泄露。趁有空自己写个简单跑马灯效果。 2、效果&#xff1a; 3、调用方法&#xff1a; 将下方代码copy到项目文件内&#xff0c;引用文件&#xff…

TextView 跑马灯效果

1、重写TextView class TextViewMarquee : AppCompatTextView {constructor(context: Context?) : super(context!!) {}constructor(context: Context?, attrs: AttributeSet?) : super(context!!, attrs) {}constructor(context: Context?, attrs: AttributeSet?, defSt…

html js 跑马灯效果,Javascript实现跑马灯效果的简单实例

页面html&#xff1a; var speed 10 var demo document.getElementById("demo"); var demo1 document.getElementById("demo1"); var demo2 document.getElementById("demo2"); demo2.innerHTML demo1.innerHTML function Marquee() { if (…