一套满足企业自建OpenAPI、接口平台的解决方案、产品和源代码

2022-05-28 19:16:50 浏览数 (3)

企业自建接口平台的好处

在现代软件系统项目开发中,API接口是不可或缺的组成部分。

不管是内部系统之间的接口调用和提供,还是外部API接口的对接和开发,搭建企业自己统一的接口平台,对API接口的开发、管理和维护,都会大有裨益。

例如以下几个接口平台的例子。

分类1:专门以提供API接口服务为主的服务市场,例如:聚合数据平台。在平台上会聚合提供不同分类的接口服务,每个接口有调用次数和不同的价格。这类平台,主要针对API接口调用次数收费。

分类2:聚焦于某个细分领域或行业数据服务的接口服务平台,并以API接口提供增值或主要服务。例如:查快递的快递100平台。此类平台以领域服务为主,同时以API为主要形式提供和对接。

分类3:由ISV提供的,面向开发者生态的接口平台。例如:我们所熟悉的抖音开放平台、微博开放平台、支付宝开放平台、微信小程序开放平台。此类平台,通常对接口的调用是免费的,不直接收到接口调用的服务费,但会分配不同的接口权限和每日接口配额。

分类4:在企业和企业之前,有针对性的开放部分API接口的平台。例如在学校系统或医院系统中,当需要提供API接口给指定企业、单位使用的,要么是直接提供数据库账号密码、要么创建提供视图、要么简单封装几个API接口。但都缺少规划和管理。我们暂且把这类在局域网或内网有针对性开放API接口的平台,称为内部接口平台。这些API接口,只对于某些单位才是有价值的。例如:YesDev协作云为程序员客栈这个渠道提供的专用API接口。同样有接口列表、接口在线文档。

分类5:自主研发的互联网产品的API接口平台,以供多端接入和使用。例如同一个产品矩阵,提供API接口给自己的安卓客户端、iOS客户端、小程序、H5、硬件设备等使用。

统一接口开发、统一接口管理、统一接口开放服务

从上面的接口平台分类和例子,可以看出,如果没有一套完整的API接口平台,不管是面向外部的合作方、开发者,还是内部的产品和终端,都会容易失去对API开发、升级、维护和管理的能力。

有了统一的API接口平台,不管对内还是对外,都能更好做到:统一接口开发、统一接口管理、统一接口开放服务

统一接口开发:包括API接口的命名、分类、格式、接口文档、接口变更记录、接口发布、接口测试、接口日记等,都要统一风格、规范标准和约束。

统一接口管理:包括API接口的升级、增加参数、部署、性能监控、错误日记,同时结合开发、测试、运维、文档等形成整套的研发体系和闭环。

统一接口开放服务:主要是针对接口的IP白名单、接口申请、接口调用权限、接口次数限制、接口流量统计,以及开发者账号的开通注册,以应用的创建和审核。解决要不要对接口收费,怎么收费和进行服务、售后支持。

一套完整的解决方案

接口大师,即 PhalApi Pro 专业版,是一套研发、管理和开放API接口的软件源代码和解决方案。

接口大师,针对API接口平台,提供了5合1的快速开发能力。分别有:

展示首页(游客访问)、Admin管理后台(管理员使用)、Platform开放平台(开发者使用)、Docs在线接口文档(100%全自动根据代码生成)、Wiki技术文档(二次开发完整的技术文档)。

接口平台的使用说明

我们分别通过三种不同的角色视角来体验和使用接口平台,以构成一个完整的业务流程。

角色1:开发者 - 使用方

首先,接口平台的最终使用人员是开发者,即具备开发能力的技术人员。他们需要使用你提供的API接口时,需要按以下流程来使用。

简单来说,开发者需要先注册一个自己的开发者账号,然后登录开放平台。

然后创建并申请自己的开发应用,并等待后台审核。因为最终调用API接口的是应用程序,不是开发者本人。

开发者应用审核通过后,就可以先调用接口获得访问的令牌access_token,最后就可以根据令牌使用他需要调用的API接口。

例如,汉字转拼音接口的在线接口文档(整份在线接口文档都是不需要再人工额外维护的,都是根据源代码自动生成,模板可以自己再调整)。还可以在线测试接口,不需要额外的接口测试工具。

最后,开发者还可以查看自己调用和使用接口的流量,以及查看自己拥有哪些API接口的权限等。

角色2:管理员 - 内部管理维护(此部分不需要开发,不需要技术人员)

再来看下,在这背后,为了让有需要用到你API接口的开发人者顺利调用接口,内部管理人员需要做哪些操作,以及可以怎么管理开发者账号、开发者的应用和开发者的接口权限。

首先,要以管理员的账号登录管理后台(为了方便区分,管理后台是黄色,开放平台是蓝色)。

进入管理后台,针对未审核的应用,进行审核。

你可以通过,也可以审核不通过。审核不通过的应用,是没有任何API接口的权限。

在此之前,你可能还要对所拥有的API接口进行权限分配。例如哪些开发者账号角色有哪些接口权限,或者哪些指定的开发者账号有哪些API权限,又或者是哪个应用有API权限。这些API接口权限,都可以进行灵活地配置。

甚至对开发者角色也是支持动态配置的。(PS:开发者在注册时,可以选择自己的类型。)

如果你需要对应用的调用IP地址进行限制,或者对应用的有效日期进行限制,或者是限制应用每天调用接口的总次数等,都可以在应用中进行设置。还包括有:重置app密钥等。

如果你需要对某些API接口设置收费套餐,例如调用多少次多少费用多久时间内有效。同时,还可以设置接口的免费试用次数等,以及组合优惠套餐。

设置好后,开发者就可以进行在线购买和使用,以及进行流量计费。

当然,你在管理后台,可以看到实时的接口流量,分为:全部接口次数、付费接口次数、试用接口次数、普通接口次数、扣费失败的次数等统计数据,方便你可以更好地进行日常运营和经营服务。

除此之外,你也可以看到接口流量订单、接口流量包套餐的列表和管理。

角色3:API接口开发 - 内部二次开发

看完了“台前”,我们再来看下“幕后”。

回归到技术层面,开发者在调用API接口前,管理员在维护API接口前,需要有内部技术人员开发API接口,并放到接口平台上。

接口大师提供了两种快速开发API接口的方案。一种是:API低代码接口开发;另一种是:PHP接口源代码开发。

先来说第一种,API低代码接口开发。

这种方式,基本可以完全通过管理后台的界面来完成,由非技术人员和非PHP开发工程师也能胜任和快速使用。

进入管理后台-接口管理-可视化接口设计。你可以看到之前通过后台开发过的API接口,可以重新编辑。

你可以快速创建一个新API接口,它的神奇之处在于,你可以通过页面表单的方式,快速生成API接口代码骨架和API源代码,甚至可以直接使用。同时,剩下的API接口文档、接口权限、接口统计、接口日记、接口发布,都不需要你再操心。

接口大师提供了三种生成API接口的类型:接口对接类的API、数据库接口API、普通接口API

例如,假设你原来有一套内部的Java接口,可以快速嫁接到接口平台。填写好必要的接口参数,就可以点击【生成】API接口代码,没问题,保存发布,即可使用。

这里的接口模板是(你也可以自己调整):

代码语言:javascript复制
<?php
namespace AppApi;
use AppCommonApi;
// use AppDomain{接口类名} as {接口类名}Domain;

/**
 * 接口模块
 */
class {接口类名} extends Api {

    /**
     * 接口参数规则配置
     */
    public function getRules() {
        $rules = parent::getRules();
        $curRules = array(
            '{接口方法名}' => array(
                // 
            ),
        );
        return array_merge($rules, $curRules);
    }

    /**
     * 接口标题
     * @desc 接口功能描述

     * 
     */ 
    public function {接口方法名}() {
        // 接口参数获取
        // 接口参数获取
        // 结果返回
        $rs =array(); 

        // 获取用户ID,未登录时异常返回
        // $uid = $this->tryToGetUid();

        // 获取app_key,未指定时异常返回
        // $appKey = $this->tryToGetAppKey();

        // TODO: 实现你的业务逻辑……
        // $domain = new {接口类名}Domain();

        // API接口对接(内部接口,或上游接口)
        $apiParams = array(
        );
        // TODO: 接口地址,请更换成你需要请求的接口地址
        $apiUrl = 'http://demo.phalapi.net/';
        // POST请求
        $curl = new PhalApiCUrl();
        $curlRs = $curl->post($apiUrl, $apiParams);
        // GET请求
        // $curlRs = $curl->get($apiUrl . (strpos($apiUrl, '?') ? '&' : '?') . http_build_query($apiParams));
        $rs['backend_data_raw'] = $curlRs;
        $rs['backend_data'] = json_decode($curlRs, true);


        return $rs;

    }

    // 绑定数据库模型
    protected function getDataModel() {
        return new AppModel{接口类名}();
    }
}

发布接口后,就可以直接在线使用,还可以看到接口的发布记录和代码变更。

再来说第二种,PHP接口源代码开发。这种方式,更合适专业的PHP或非PHP开发工程师使用,进行更强大的API接口开发。

针对源代码的开发,接口大师提供了整体的架构设计图:

还有完整的专业版开发文档。

其专业版的文档目录有:

前言 简介 安装 一、使用手册 1.1 API接口系统使用手册 1.2 Platform开放平台使用手册 1.3 Admin管理后台使用手册 二、产品介绍 2.1 整体架构及业务流程 2.2 账号体系 2.3 开放接口权限 2.4 重要项目配置 2.5 接口商城 三、API接口开发文档 3.1 接口分类 3.2 在线接口文档 3.3 如何调用接口 3.4 如何开发接口 3.5 接口调试 3.6 计划任务 3.7 连接其他数据库 3.8 第二套接口验签方案 3.9 新增接口目录教程 4.0 第三方登录接入流程 四、前端开发文档 4.1 Platform开放平台开发文档 4.2 Admin管理后台开发文档 五、开发者App 5.1 开发者App使用手册 5.2 开发者App客户端源码说明 六、自动化单元测试 6.1 PHP接口自动化测试 七、附录 6.1 版本更新日记 6.2 数据库表结构 6.3 联系我们和FAQ 6.4 如何编写开发手册 6.5 文档编写规范

除此这外,还有PhalApi开源接口框架的开发文档。http://docs.phalapi.net/

开源版的开发文档目录有:

前言 前言 如何升级PhalApi? 一、快速开发 1.1下载与安装 1.2 运行Hello World 1.3 如何请求接口服务 1.4 接口响应与在线调试 1.5 Api接口层 1.6 DataApi通用数据接口 1.7 Domain领域层与ADM模式 1.8 Model数据层与数据库操作 1.9 DataModel数据基类 1.10 单元测试 1.11 自动加载和PSR-4 1.12 接口文档 1.13 初始化 二、数据库 2.1 数据库连接 2.2 数据库与NotORM 2.3 数据库使用和查询 2.4 数据库分库分表策略 2.5 连接多个数据库 2.6 打印和保存SQL语句 2.7 定制你的Model基类 三、高级专题 3.1 接口参数 3.2 配置 3.3 日志 3.4 缓存 3.5 过滤器 3.6 COOKIE 3.7 加密 3.8 国际化 3.9 CURL请求 3.10 工具和杂项 3.11 DI服务汇总 3.12 扩展类库 3.13 SDK包的使用 3.14 脚本命令 3.15 MQ队列 3.16 错误处理 四、运营平台 4.1 运营平台 4.2 运营平台前端部分 4.3 运营平台后端接口 4.4 应用市场 五、插件开发 5.1 第三方应用插件开发教程 5.2 【精华】茶店微信小程序应用开发实战 5.3 在线生成插件 六、2020视频教程 第一课 B站首发,2020视频教程开讲啦! 第二课 视频教程 - 下载和安装 第三课 视频教程 - Hello World 第四课 视频教程 - 如何请求接口服务 第五课 视频教程 - 接口响应与在线调试 第六课 视频教程 - Api接口层 第七课 视频教程 - Domain领域业务层与ADM模式解说 第八课 视频教程 - Model数据层与数据库连接 第九课 视频教程 - 测试驱动开发与PHPUnit 第十课 视频教程 - 自动加载和PSR-4 第十一课 视频教程 - 接口文档 视频教程 - 十分钟体验PhalApi Pro,让PHP接口开发更有趣! 视频教程 - 茶店应用实战 七、关于PhalApi 2.x 6.1 PhalApi 2.x 版本完美诠释 6.2 PhalApi 2.x 升级指南 6.3 PhalApi 2.x VS PhalApi 1.x 八、版本更新 更新日记

源代码二次开发

PhalApi专业版的运行环境要求如下:

  • 操作系统:Windows/Linux/Mac/Ubuntu/CentOS等
  • 开发语言:PHP 7 及以上版本,推荐使用PHP 7.3
  • 数据库:MySQL 5.5 及以上版本
  • Web服务器:Nginx/Apache
  • 正式服务器配置最低配置:CPU 1核 / 内存 2G / 硬盘空间40G / 带宽1M

官方推荐使用:CentOS 7 PHP 7 MySQL 5.6 Nginx

整套平台共分为4套源代码。

还有一套App Flutter的源代码。

接口大师 v3.11 版本发布与更新的内容

本次 v3.11.0 版本更新内容主要有:

PhalApi专业版 3.11.0 (2022-05)

1、管理后台添加:每日接口统计,支持日期范围、开发者账号、AppKey、API接口的搜索

2、开放平台添加:每日接口统计,支持日期范围、API接口、AppKey的搜索(开发者只能查看自己账号的统计)

3、管理后台应用管理,添加查看应用接口权限的快捷入口

4、在线接口文档支持GET/POST的同步显示,包括接口文档详情页和列表页文档

5、同步升级到phalapi/kernal 2.17.3 最新版本,新增.env文件

6、应用编辑页面增加一个一键复制app_key和密钥的入口

7、权限预览页面可以筛选全部、已获得和未获得权限的接口,默认筛选已获得权限的接口

如何升级到接口大师v3.12.0 新版本?

在获取到最新版v3.12.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.11.0.sql 数据库文件变更,并执行。

5、环境配置文件新增,如果需要,可以在根目录添加.env文件进行环境配置和使用。

0 人点赞