当需要和其他系统对接的时候,需要定义API 地址,一般都是保存在配置文件中的。一个较正规的项目开发都有开发环境、测试环境,已经上线后的生产环境,这时候不同的人员使用的环境也是不样的,需要配置路径。
如何方便的配置与切换API地址是此刻讨论的目标。
方案一:配置在数据库中,每个环境都有自己的数据库,给API配置不同的值,就可以区分开来。一般而言不会去改变他,不用担心用户忘记切换地址导致访问到线上环境。
方案二:写在配置文件中(定义为常量,全局访问),只配置当前环境对应的API地址,配置文件从SVN中移除,用户必须在服务器上手动配置,同样需要导服务器上才能看到地址信息,只是修改起来比较麻烦(当然修改也是一劳永逸的)。
方案三:写在配置文件中(定义为常量,全局访问),配置所有环境API地址,配置文件从SVN中移除。就是下面这种,用户只需要定义环境变量(开发/测试/产品),一般都是已经配置好了的。用户可以直观地看到所有API的配置,相对而言安全性不是很好。API地址随环境变量的改变而自动变化。
实例:
<?php
/**
* @Author: Jolon
* @Date : 2018-12-13 13:39:45
* @Last Modified by: Jolon
* @Last Modified time: 2019-01-05 16:00:16
*/
//定义环境的变量 test 测试 , prod:生产环境, dev : 开发者环境
defined('CG_ENV') OR define('CG_ENV', 'dev');// test/prod/dev
/************************************* 接口主机名定义 *************************************/
if(CG_ENV == 'dev') //开发环境
{
defined('CG_API_HOST_SYS') OR define('CG_API_HOST_SYS', 'http://127.0.0.1:85');
defined('CG_API_HOST_LOG') OR define('CG_API_HOST_LOG', 'http://127.0.0.1:86');
}elseif(CG_ENV == 'prod'){ //生产环境
defined('CG_API_HOST_SYS') OR define('CG_API_HOST_SYS', 'http://www.cg2.com');
defined('CG_API_HOST_LOG') OR define('CG_API_HOST_LOG', 'http://www.cg2.com');
}else{ //测试环境
defined('CG_API_HOST_SYS') OR define('CG_API_HOST_SYS', 'http://www.cg3.com');
defined('CG_API_HOST_LOG') OR define('CG_API_HOST_LOG', 'http://www.cg3.com');
}
<?php
/**
* 第三方系统对接 API地址
* @author:Jolon
* @since : 20190220
*/
// CG_ENV 在 config/conf.php中定义
if(CG_ENV == 'dev'){// 开发环境
/******************* 采购系统服务器配置 *************/
$config['cg_system']['webfornt']['ip'] = CG_SYSTEM_WEB_FRONT_IP;
$config['cg_system']['appdal']['ip'] = CG_SYSTEM_APP_DAL_IP;
$config['cg_system']['webfornt']['print_billingcontract'] = CG_SYSTEM_WEB_FRONT_IP.'front/print_template/billingcontract.php';
$config['cg_system']['webfornt']['print_compact'] = CG_SYSTEM_WEB_FRONT_IP.'front/print_template/contract.php';
}elseif(CG_ENV == 'prod'){ //生产环境
/******************* 采购系统服务器配置 *************/
$config['cg_system']['webfornt']['ip'] = CG_SYSTEM_WEB_FRONT_IP;
$config['cg_system']['appdal']['ip'] = CG_SYSTEM_APP_DAL_IP;
$config['cg_system']['webfornt']['print_billingcontract'] = CG_SYSTEM_WEB_FRONT_IP.'front/print_template/billingcontract.php';
$config['cg_system']['webfornt']['print_compact'] = CG_SYSTEM_WEB_FRONT_IP.'front/print_template/contract.php';
}else{ //测试环境
/******************* 采购系统服务器配置 *************/
$config['cg_system']['webfornt']['ip'] = CG_SYSTEM_WEB_FRONT_IP;
$config['cg_system']['appdal']['ip'] = CG_SYSTEM_APP_DAL_IP;
$config['cg_system']['webfornt']['print_billingcontract'] = CG_SYSTEM_WEB_FRONT_IP.'front/print_template/billingcontract.php';
$config['cg_system']['webfornt']['print_compact'] = CG_SYSTEM_WEB_FRONT_IP.'front/print_template/contract.php';
}