A SDK For Apollo Open Api
PHP >= 7.2
Composer
$ composer require " orderhandler/apollo-openapi-sdk"
使用(以Base为例):
<?php
use OrderHandler \ApolloOpenApi \ApiFactory ;
$ config = [
'PortalAddress' => 'Your Portal Address' ,
'Authorization' => 'Your Authorization Token' ,
];
$ base = ApiFactory ::base ($ config );
$ appList = $ base ->getApp ($ appId );
参数名
参数说明
PortalAddress
Apollo地址
Authorization
申请的token
参数名
参数说明
env
所管理的配置环境
appId
所管理的配置AppId
clusterName
所管理的配置集群名
namespaceName
所管理的Namespace的名称
key
需要配置的key,在修改、删除配置中使用
operator
操作者,域账号,在删除配置中使用
<?php
//config参数详情见顶部参数说明
$ base = OrderHandler \ApolloOpenApi \ApiFactory ::base ($ config );
$appList = $base->getApp($appId);
[
{
"env":"DEV",
"clusters":[ //集群列表
"default",
"FAT381"
]
},
{
"env":"UAT",
"clusters":[
"default"
]
},
{
"env":"PRO",
"clusters":[
"default",
"SHAOY",
"SHAJQ"
]
}
]
<?php
//config参数详情见顶部参数说明
$ namespaces = OrderHandler \ApolloOpenApi \ApiFactory ::namespaces ($ config );
url_params 参数详情见顶部URL路径参数说明
$url_params = [
'env' => 'ENV',
'appId' => 'APPID',
'clusterName' => 'CLUSTERNAME',];
$list = $namespaces->getAll($url_params);
[
{
"appId": "100003171",
"clusterName": "default",
"namespaceName": "application",
"comment": "default app namespace",
"format": "properties", //Namespace格式可能取值为:properties、xml、json、yml、yaml
"isPublic": false, //是否为公共的Namespace
"items": [ // Namespace下所有的配置集合
{
"key": "batch",
"value": "100",
"dataChangeCreatedBy": "song_s",
"dataChangeLastModifiedBy": "song_s",
"dataChangeCreatedTime": "2016-07-21T16:03:43.000+0800",
"dataChangeLastModifiedTime": "2016-07-21T16:03:43.000+0800"
}
],
"dataChangeCreatedBy": "song_s",
"dataChangeLastModifiedBy": "song_s",
"dataChangeCreatedTime": "2016-07-20T14:05:58.000+0800",
"dataChangeLastModifiedTime": "2016-07-20T14:05:58.000+0800"
},
{
"appId": "100003171",
"clusterName": "default",
"namespaceName": "FX.apollo",
"comment": "apollo public namespace",
"format": "properties",
"isPublic": true,
"items": [
{
"key": "request.timeout",
"value": "3000",
"comment": "",
"dataChangeCreatedBy": "song_s",
"dataChangeLastModifiedBy": "song_s",
"dataChangeCreatedTime": "2016-07-20T14:08:30.000+0800",
"dataChangeLastModifiedTime": "2016-08-01T13:56:25.000+0800"
},
{
"id": 1116,
"key": "batch",
"value": "3000",
"comment": "",
"dataChangeCreatedBy": "song_s",
"dataChangeLastModifiedBy": "song_s",
"dataChangeCreatedTime": "2016-07-28T15:13:42.000+0800",
"dataChangeLastModifiedTime": "2016-08-01T13:51:00.000+0800"
}
],
"dataChangeCreatedBy": "song_s",
"dataChangeLastModifiedBy": "song_s",
"dataChangeCreatedTime": "2016-07-20T14:08:13.000+0800",
"dataChangeLastModifiedTime": "2016-07-20T14:08:13.000+0800"
}
]
url_params 参数详情见顶部URL路径参数说明
$url_params = [
'env' => 'ENV',
'appId' => 'APPID',
'clusterName' => 'CLUSTERNAME',
'namespaceName' => 'NAMESPACENAME',];
$result = $namespaces->getOne($url_params);
{
"appId": "100003171",
"clusterName": "default",
"namespaceName": "application",
"comment": "default app namespace",
"format": "properties", //Namespace格式可能取值为:properties、xml、json、yml、yaml
"isPublic": false, //是否为公共的Namespace
"items": [ // Namespace下所有的配置集合
{
"key": "batch",
"value": "100",
"dataChangeCreatedBy": "song_s",
"dataChangeLastModifiedBy": "song_s",
"dataChangeCreatedTime": "2016-07-21T16:03:43.000+0800",
"dataChangeLastModifiedTime": "2016-07-21T16:03:43.000+0800"
}
],
"dataChangeCreatedBy": "song_s",
"dataChangeLastModifiedBy": "song_s",
"dataChangeCreatedTime": "2016-07-20T14:05:58.000+0800",
"dataChangeLastModifiedTime": "2016-07-20T14:05:58.000+0800"
}
appId 所管理的配置AppId
requestBody 请求内容,json格式传参,详情如下:
请求内容列表(Request Body,JSON格式):
参数名
必选
类型
说明
name
true
String
Namespace的名字
appId
true
String
Namespace所属的AppId
format
true
String
Namespace的格式
isPublic
true
boolean
是否是公共文件
comment
false
String
Namespace说明
dataChangeCreatedBy
true
String
namespace的创建人
$result = $namespaces->create($appId, $requestBody);
{
"name": "FX.public-0420-11",
"appId": "100003173",
"format": "properties",
"isPublic": true,
"comment": "test",
"dataChangeCreatedBy": "zhanglea",
"dataChangeLastModifiedBy": "zhanglea",
"dataChangeCreatedTime": "2017-04-20T18:25:49.033+0800",
"dataChangeLastModifiedTime": "2017-04-20T18:25:49.033+0800"
}
url_params 参数详情见顶部URL路径参数说明
$url_params = [
'env' => 'ENV',
'appId' => 'APPID',
'clusterName' => 'CLUSTERNAME',
'namespaceName' => 'NAMESPACENAME',];
$result = $namespaces->getStatus($url_params);
{
"namespaceName": "application",
"isLocked": false
}
{
"namespaceName": "application",
"isLocked": true,
"lockedBy": "song_s" //锁owner
}
<?php
//config参数详情见顶部参数说明
$ configuration = OrderHandler \ApolloOpenApi \ApiFactory ::configuration ($ config );
url_params 参数详情见顶部参数说明
requestBody 请求内容,json格式传参,详情如下:
请求内容列表(Request Body,JSON格式):
参数名
必选
类型
说明
key
true
String
配置的key,长度不能超过128个字符。非properties格式,key固定为content
value
true
String
配置的value,长度不能超过20000个字符,非properties格式,value为文件全部内容
comment
false
String
配置的备注,长度不能超过1024个字符
dataChangeCreatedBy
true
String
item的创建人,格式为域账号,也就是sso系统的User ID
$url_params = [
'env' => 'ENV',
'appId' => 'APPID',
'clusterName' => 'CLUSTERNAME',
'namespaceName' => 'NAMESPACENAME',];
$result = $configuration->add($url_params, $requestBody);
{
"key": "timeout",
"value": "3000",
"comment": "超时时间",
"dataChangeCreatedBy": "zhanglea",
"dataChangeLastModifiedBy": "zhanglea",
"dataChangeCreatedTime": "2016-08-11T12:06:41.818+0800",
"dataChangeLastModifiedTime": "2016-08-11T12:06:41.818+0800"
}
url_params 参数详情见顶部参数说明
requestBody 请求内容,json格式传参,详情如下:
请求内容列表(Request Body,JSON格式):
参数名
必选
类型
说明
key
true
String
配置的key,需和url中的key值一致。非properties格式,key固定为content
value
true
String
配置的value,长度不能超过20000个字符,非properties格式,value为文件全部内容
comment
false
String
配置的备注,长度不能超过1024个字符
dataChangeLastModifiedBy
true
String
item的修改人,格式为域账号,也就是sso系统的User ID
$url_params = [
'env' => 'ENV',
'appId' => 'APPID',
'clusterName' => 'CLUSTERNAME',
'namespaceName' => 'NAMESPACENAME',
'key' => 'KEY',];
$result = $configuration->update($url_params, $requestBody);
无
url_params 参数详情见顶部参数说明
requestBody 请求内容,json格式传参,详情如下:
请求内容列表(Request Body,JSON格式):
参数名
必选
类型
说明
releaseTitle
true
String
此次发布的标题,长度不能超过64个字符
releaseComment
false
String
发布的备注,长度不能超过256个字符
releasedBy
true
String
发布人,域账号
$url_params = [
'env' => 'ENV',
'appId' => 'APPID',
'clusterName' => 'CLUSTERNAME',
'namespaceName' => 'NAMESPACENAME',];
$result = $configuration->release($url_params,$requsetBody);
{
"appId": "test-0620-01",
"clusterName": "test",
"namespaceName": "application",
"name": "2016-08-11",
"configurations": {
"timeout": "3000",
},
"comment": "修改timeout值",
"dataChangeCreatedBy": "zhanglea",
"dataChangeLastModifiedBy": "zhanglea",
"dataChangeCreatedTime": "2016-08-11T14:03:46.232+0800",
"dataChangeLastModifiedTime": "2016-08-11T14:03:46.235+0800"
}
$url_params = [
'env' => 'ENV',
'appId' => 'APPID',
'clusterName' => 'CLUSTERNAME',
'namespaceName' => 'NAMESPACENAME',
'key' => 'KEY',
'operator' => 'OPERATOR',];
$result = $configuration->delete($url_params);
无