项目背景
如果你需要开发搭建自己的api数据交易平台,并且能在平台上面进行对客户管理、接口管理、套餐管理、账单管理、充值管理,那么下面将来介绍如何使用接口大师这个框架快速进行开发。
安装
PhalApi专业版的运行环境要求如下:
- 操作系统:Windows/Linux/Mac/Ubuntu/CentOS等
- 开发语言:PHP 7 及以上版本,推荐使用PHP 7.3
- 数据库:MySQL 5.5 及以上版本
- Web服务器:Nginx/Apache/IIS
- 正式服务器配置最低配置:CPU 1核 / 内存 2G / 硬盘空间40G / 带宽1M
官方推荐使用:CentOS 7 PHP 7 MySQL 5.6 Nginx
安装大概只需要几分钟,可以安装在Windows服务器、Mac、Linux服务器、虚拟机、Docker等,可以使用宝塔、IIS、Nginx、Apache等软件。上传到服务器,解压并配置好域名后。访问首页,可以看到并点击进入【首次使用,请先安装】。
随后进入安装向导界面。
填写数据库账号密码,以及管理员的账号密码,然后开始安装。
安装成功后,就可以开始进行二次开发。
系统项目和源代码结构
接口大师的系统项目主要分为5个子系统:平台展示官网、管理后台、开放平台、OpenAPI及在线接口文档、技术开发文档。
其中,源代码分为:PHP源代码一套、两套前端Vue/Javascript源代码、还有PHPUnit单元测试源代码。
如果是开发API接口,可以使用PHP编程语言进行开发(请放心,对于未使用PHP的技术人员,PHP是一门能快速上手的编程语言,并且接口大师已经把API接口的开发难度降低了近80%以上,同时比自己从零搭建平台可以节省整个项目大概30 天以上的项目周期)。
接口大师基于 PhalApi 开源接口框架,所以它的目录结构和开源版类似。PHP的接口源代码主要在src目录下。
PhalApi Pro版的目录结构如下,
代码语言:javascript复制./
├── README.md # 简介
├── bin # 脚本目录
├── config # 配置目录
│ ├── app.php # 应用配置
│ ├── dbs.php # 数据库配置
│ ├── di.php # 依赖服务配置
│ └── sys.php #系统配置
├── data # 数据库
│ └── phalapi_pro.sql # 数据库安装时的文件
├── language # 翻译包
├── pro_admin # 管理后台的前端源代码,基于iview-admin
├── pro_platform # 开放平台的前端源代码,基于iview-admin
├── public # 对外访问的目录
│ ├── admin # 管理后台访问入口(相当于pro_admin打包构建后的dist目录)
│ ├── api # 接口访问入口(内分前台API和后台API)
│ ├── docs # 离线生成的HTML接口文档
│ ├── docs.php # 在线版接口文档访问入口
│ ├── index.php
│ ├── init.php # 全局初始化文件
│ ├── install # 安装向导(成功安装后建议删除此目录)
│ ├── platform # 开放平台访问入口(相当于pro_platform打包构建后的dist目录)
│ ├── static # 静态资源
│ ├── uploads # 上传目录(需要有写入权限)
│ └── wiki # 技术文档
├── runtime # 运行目录
│ ├── _install.lock # 安装锁定文件
│ ├── cache # 文件缓存
│ └── log # 文件日志
├── sdk # SDK包
├── src # 项目源代码,非常重要
│ ├── admin # 后台接口源代码(遵循ADM模式)
│ ├── app # 开放平台接口源代码(遵循ADM模式)
│ ├── base # 基础包源代码(放置底层公共的代码,不对外直接提供接口,即不提供Api层)
│ ├── platform # 开放平台接口源代码(遵循ADM模式)
│ ├── task # 计划任务接口源代码(遵循ADM模式)
│ └── view # 页面模板目录(如接口文档)
├── tests # 单元测试
└── vendor # composer包,不需要手动修改,通过composer install/update可进行安装和更新
接口划分如下:
其中,App开放接口,这部分就是你给你的客户提供的接口,用来放置你的api数据服务接口。最后实时更新的在线接口文档(自动生成,不需要开发者人工维护),类似如下:
连接你的数据库
大概熟悉系统的源代码和代码目录结构后,我们还需要做一个准备工作,就是连接你原来的数据库,即将要开放数据服务的数据库。
目前,接口大师支持MySQL、MS SQL、PostgreSQL、Oracle 等数据库。
为此,你需要修改数据库配置文件./config/db_plus.php,修改里面的数据库连接配置。例如:
代码语言:javascript复制 'servers' => array(
'db_master' => array( // 服务器标记
'type' => 'mysql', // TODO: 数据库类型,暂时只支持:mysql, sqlserver
'host' => '127.0.0.1', // TODO: 数据库域名
'name' => 'phalapi_pro', // TODO: 数据库名字
'user' => 'root', // TODO: 数据库用户名
'password' => '', // TODO: 数据库密码
'port' => 3306, // 数据库端口
'charset' => 'utf8mb4', // 数据库字符集 utf8mb4或utf8
'pdo_attr_string' => false, // 数据库查询结果统一使用字符串,true是,false否
'driver_options' => array( // PDO初始化时的连接选项配置
// 若需要更多配置,请参考官方文档:https://www.php.net/manual/zh/pdo.constants.php
),
),
),
你也可以使用.env 文件进行环境变量的配置,再替换到上面的数据库配置文件。
修改DI注册文件./config/di.php,去掉以下代码的注释,注册并开启$di->notorm_plus服务。
代码语言:javascript复制// 连接其他数据库(或项目原有的数据库,需要时去掉注释)
// $di->notorm_plus = new NotORMDatabase($di->config->get('dbs_plus'), $di->config->get('sys.notorm_debug'));
在完成前面配置后,最后一步,便可以开始开发你的业务逻辑,连接或操作其他数据库。此时,新加的Model子类,如果是操作新增的数据库,则需要继承于BaseModelPlusBase基类。例如:
代码语言:javascript复制<?php
namespace AppModelPlus;
use BaseModelPlusBase;
class Comment extends PlusBase {
// 实现具体的数据库操作
}
这样,就可以连接和使用你的数据库表,进行API接口的开发和测试了。
开发并上架你的数据API
接口大师的一大开发特色,就是可以通过管理后台的界面,进行API低代码的在线开发。
先登录管理后台:
进入管理后台-接口管理-可视化接口设计-添加接口。
比如开放一个根据植物名称查询植物档案的接口,可以依次填写表单,把接口的标题、功能、需要的接口参数、接口返回字段、接口请求示例等写上。接口设计类型可以选择:普通接口API。然后【生成代码】。确认没问题后,可以【保存并发布】。发布后仍然可以继续修改和开发。
发布接口后,你就会看到类似以下的在线接口文档。具备在线接口测试等功能。非常方便。
设置API数据套餐和费用
有了业务数据,也有了API接口,下一步就是为我们提供的API数据接口设置费用和套餐。
进入管理后台-服务大厅-接口流量套餐-添加套餐。
类型选择:付费购买。
套餐名称:可以自己填写。
接口服务:选择刚才开发新增的API接口。
接口流量、套餐价格、有效时间:自己进行资费的配置。
配置套餐成功后,可以在后台看到套餐列表。
开发者在线购买和使用
当API接口配置套餐后,下一步,你的客户就可以在前台进行查看和购买。
对于需要付费才能使用的接口,接口列表会有【付费】标签提示。
进入到在线接口文档详情页,可以看到具体的接口流量套餐。
点击套餐,可以进行在线购买。支持支付宝等多种支付方式。
开发者购买后,可以在开放平台-服务大厅-我的套餐,查看我购买的套餐和流量消耗情况。
也可以在开放平台看到其他的统计数据,例如流量统计等。
后台流量统计和账单管理
最后,回到管理后台,可以看到全服的接口流量统计,每个应用、每个客户不同的统计数据。
也可以在后台看到订单、套餐和账单等数据。
当然,你也可以配置支付宝等在线支付的方式,不需要额外的开发。
还可以管理客户账号:
分配和管理接口权限:
基本上若搭建一个api数据交易平台,你只需要开发核心的API接口业务逻辑,剩下的接口大师都已经自动帮你完成,包括但不限于:自动生成接口文档(还支持离线文档导出)、接口权限管理、接口套餐管理、接口流量统计、接口日记、接口安全等。同时,可以节省30天 以上的项目周期,可以快速上线,为你的客户提供api数据服务。