开放内部API接口更省心省力省时间的解决方案
基于已有的内部API接口,或者现有的数据库,当需要给外部开放和提供API接口时,有哪些工具或解决方案,能快速实现企业自建API接口开放平台的需求?
如果打算从零开始,自建接口开放平台,无疑将会面临成本投入大、项目周期长、上线后对接不稳定、系统产品功能考虑不周等痛苦和问题。
于是,选择和使用符合产品需求、技术选型吻合的工具和解决方案,将会让你在接口平台搭建上事半功倍。
接口大师(PhalApi-Pro),就是这样一套研发、管理和开放API接口的软件源代码和解决方案,它基于PhalApi开源接口框架+Vue前后端分离,可用于快速搭建各类企业级接口平台。
接口大师的三大特色
接口大师,在开放平台的产品设计上,有完整的接口生态能力。
接口大师,极大降低了API接口开发的难度和时间,让技术人员可以更专注于API接口本身的业务开发。除此之外,它还提供了接口代码在线生成器、支持swagger导入、自动生成在线接口文档、支持一键部署安排(包括Windows/Linux/Docker/国产系统等)。
经过多年的经验总结,企业开放接口的内部驱动力来分析,主要来自三个方面:
- 第一,基于企业内部已有的API接口,进行选择性对外开放;
- 第二,基于企业内部已有的数据库业务数据,进行部分数据的共享和自动化对接;
- 第三,基于新接口功能的开放、提供和服务。
结合这三大内部驱动力和开放APi接口最常用的开发模式,接口大师提供了三种快速生成、开发和开放API接口的特色能力。
- 特色1:一键导入swagger,即刻开放内部APi接口
- 特色2:数据库动态配置,轻松开放数据API接口
- 特色3:普通API接口源代码在线生成器
特色1:一键导入swagger,即刻开放内部APi接口
在API接口管理后台,可以一键导入swaager.json文件,然后选择性地开放你的API接口。
导入前的swagger接口列表:
上传导入时,勾选需要开放的swagger接口:
导入后,对API接口的二次开发和调整:
前台开放接口文档的浏览效果,类似如下:
外部开发者注册后,可以查看自己已经授权的API接口,并根据接口文档进行接口的调用。
最后,接口管理后台可以查看和统计开发者的接口流量使用情况,对接口进行权限分配、配额设置、IP白名单设置、应用有效日期、接口流量包、接口流量统计等进行管理。
例如,接口管理后台的首页统计。
特色2:数据库动态配置,轻松开放数据API接口
接口大师,支持:MySQL、Sql Server、Oracle、PostgreSQL等常用数据库。
如果需要快速开放你内部的数据库数据给外部开发者,可以先动态配置好你的数据库,然后再快速生成数据库的API开放接口。全程操作支持界面化操作,以及低代码的开发方式,不需要专业的后端开发工程师,根据教程配置和使用,即可实现编程。
首先,添加你的数据库配置。进入数据库配置管理,
添加新数据库配置,根据数据库配置表单填写,并测试数据库连接是否正常。
配置好你的数据库后,检查你的数据库是否正确。
然后,进入接口管理,并添加新接口。在接口设计类型时,选择【生成数据库表接口API】,然后选择你的数据库,以及对应的数据库表。根据提示,补充其他接口的开放信息,例如接口的参数、接口的请求方式等。
确认没问题后,点击生成代码,保存草稿。
可以看到,系统自动生成的接口PHP源代码如下:
<?php namespace App\Api; use App\Common\DataApi as Api; // use App\Domain\ClassNameAds as ClassNameAdsDomain; /** * 请输入接口模块Ads */ class ClassNameAds extends Api { /** * 接口参数规则配置 */ public function getRules() { $rules = parent::getRules(); $curRules = array( 'ActionNameAds' => array( // ), ); return array_merge($rules, $curRules); } /** * 请输入interface_title * @desc 请输入接口功能描述 * @version v1.0 * */ public function ActionNameAds() { // 接口参数获取 // 接口参数获取 // 结果返回 $rs = array(); // 获取用户ID,未登录时异常返回 // $uid = $this->tryToGetUid(); // 获取app_key,未指定时异常返回 // $appKey = $this->tryToGetAppKey(); // TODO: 实现你的业务逻辑…… // $domain = new ClassNameAdsDomain(); // 动态查询参数 $whereParams = array( ); // 获取数据库的表实例,可以切换你的数据库和其他表 $table = \PhalApi\DI()->db_yesdev_db_dev->pp_ads; // 根据SQL查询数据库,需要带表前缀 // 更多数据库操作请见:http://docs.phalapi.net/#/v2.0/database-usage $sql = 'SELECT * FROM pp_ads WHERE 1=1 LIMIT 0, 100'; $rows = $table->queryAll($sql, $whereParams); // 对数据的加工处理 foreach ($rows as &$itRef) { // 对每一行数据的处理…… // $itRef['id'] = $itRef['id']; } // 返回数据 $rs['rows'] = $rows; return $rs; } // 绑定数据库模型 protected function getDataModel() { return new \App\Model\ClassNameAds(); } }
你可以对上面的接口源代码进行调整和修改,也可以直接使用。核心是,可以修改以下代码片段,以便实现你的数据SQL查询逻辑。
// 根据SQL查询数据库,需要带表前缀 // 更多数据库操作请见:http://docs.phalapi.net/#/v2.0/database-usage $sql = 'SELECT * FROM pp_ads WHERE 1=1 LIMIT 0, 100'; $rows = $table->queryAll($sql, $whereParams);
接口数据的SQL查询和操作确认后,进行接口的发布。如果选择了CURD接口,系统会同时提供默认的增删改查接口。在接口列表你将可以看到类似以下的数据API接口。
进入到刚才新创建的数据API接口文档,可以查看接口文档,以及进行在线接口测试。
后续的接口使用、管理和前面类似,不再赘述。
特色3:普通API接口源代码在线生成器
最后,如果是需要开发和开放新的接口功能和接口服务,可以在接口源代码在线生成器中,选择普通API接口,并且进行在线接口编程。
如果需要进行源代码的接口快速开发,可以参考 PhalApi Pro 技术文档。
或者参考PhalApi开源接口框架(https://www.phalapi.net/)的开发文档。
接口大师 v3.13 版本发布与更新的内容
本次 v3.13.0 版本更新内容主要有:
PhalApi专业版 3.13.0 (2022-07)
- 支持MySQL动态数据库源管理和配置、使用,DI数据库服务使用延时初始化,保证数据库连接性能
- 完善管理后台的菜单权限配置
- 开放平台接口权限状态同步与优化
- 支持API接口版本@version配置和显示、以及请求方式的文档显示优化
- 支持swaager批量导入,支持多个接口的勾选、覆盖导入和快速发布
- 管理后台统计增加表格合计
- api开发工具优化,生成数据API接口时可以选择数据库和数据库表
- 一些已知的bugfixed和产品优化
- 优化修复:
- 1、生成数据接口Api时,支持驼峰类名与蛇形命名法的数据库表名关联
- 2、低代码接口开发,文案调整,以及生成HTTP网关接口API时,微调生成的接口模板
- 3、接口低代码开发,支持GET/POST方法设置
- 4、接口套餐创建后,不可更改套餐类型
- 5、支持Oracle数据库连接
如何升级到接口大师v3.13 新版本?
在获取到最新版v3.13.0源代码,源代码后,本次版本更新的主要内容有:
注意!升级前,请注意原有的代码备份!!
1、替换./public/platform目录,更新Platform开放平台的编译包代码(如果原来已经改动Platform源代码,需要合并源码后再编译打包更新,可以使用git的分支合并进行新版本的对比和升级)
2、替换./public/admin目录,更新Admin管理后台的编译包代码(如果原来已经改动Admin源代码,需要合并源码后再编译打包更新,可以使用git的分支合并进行新版本的对比和升级)
3、PHP源代码更新
对比并替换./src/base目录,对比并替换./src/admin目录,对比并替换./src/platform目录,对比并替换./public/api目录。可以使用git的分支合并进行新版本的对比和升级。
4、数据库更新
请见
./data/phalapi_pro_v3.13.0.sql 数据库文件变更,并执行。
5、composer包更新
执行composer包更新命令:composer udpate。