4000-520-616
欢迎来到免疫在线!(蚂蚁淘生物旗下平台)  请登录 |  免费注册 |  询价篮
主营:原厂直采,平行进口,授权代理(蚂蚁淘为您服务)
咨询热线电话
4000-520-616
当前位置: 首页 > 新闻动态 >
新闻详情
apollo开放平台 - CSDN
来自 : CSDN技术社区 发布时间:2021-03-25

Apollo提供了一套的Http REST接口,使第三方应用能够自己管理配置。虽然Apollo系统本身提供了Portal来管理配置,但是在有些情景下,应用需要通过程序去管理配置。

二、 第三方应用接入Apollo开放平台

2.1 注册第三方应用

第三方应用负责人需要向Apollo管理员提供一些第三方应用基本信息。

基本信息如下:

第三方应用的AppId、应用名、部门 第三方应用负责人

Apollo管理员在 http://{portal_address}/open/manage.html 创建第三方应用,创建之前最好先查询此AppId是否已经创建。创建成功之后会生成一个token,如下图所示:

 

2.2 给已注册的第三方应用授权

第三方应用不应该能操作任何Namespace的配置,所以需要给token绑定可以操作的Namespace。Apollo管理员在 http://{portal_address}/open/manage.html 页面给token赋权。赋权之后,第三方应用就可以通过Apollo提供的Http REST接口来管理已授权的Namespace的配置了。

2.3 第三方应用调用Apollo Open API

2.3.1 调用Http REST接口

任何语言的第三方应用都可以调用Apollo的Open API,在调用接口时,需要设置注意以下两点:

Http Header中增加一个Authorization字段,字段值为申请的token Http Header的Content-Type字段需要设置成application/json;charset=UTF-8

2.3.2 Java应用通过apollo-openapi调用Apollo Open API

从1.1.0版本开始,Apollo提供了apollo-openapi客户端,所以Java语言的第三方应用可以更方便地调用Apollo Open API。

首先引入apollo-openapi依赖:

 dependency  groupId com.ctrip.framework.apollo /groupId  artifactId apollo-openapi /artifactId  version 1.1.0 /version  /dependency 

在程序中构造ApolloOpenApiClient:

String portalUrl = \"http://localhost:8070\"; // portal urlString token = \"e16e5cd903fd0c97a116c873b448544b9d086de9\"; // 申请的tokenApolloOpenApiClient client = ApolloOpenApiClient.newBuilder() .withPortalUrl(portalUrl) .withToken(token) .build();

后续就可以通过ApolloOpenApiClient的接口直接操作Apollo Open API了,接口说明参见下面的Rest接口文档。

2.3.3 .Net core应用调用Apollo Open API

.Net core也提供了open api的客户端,详见https://github.com/ctripcorp/apollo.net/pull/77

三、 接口文档

3.1 URL路径参数说明

参数说明 所管理的配置环境 appId 所管理的配置AppId clusterName 所管理的配置集群名, 一般情况下传入 default 即可。如果是特殊集群,传入相应集群的名称即可 namespaceName 所管理的Namespace的名称,如果是非properties格式,需要加上后缀名,如sample.yml

3.2 API接口列表

3.2.1 获取App的环境,集群信息

URL : http://{portal_address}/openapi/v1/apps/{appId}/envclusters Method : GET Request Params : 无 返回值Sample:
 \"env\":\"FAT\", \"clusters\":[ //集群列表 \"default\", \"FAT381\" \"env\":\"UAT\", \"clusters\":[ \"default\" \"env\":\"PRO\", \"clusters\":[ \"default\", \"SHAOY\", \"SHAJQ\"]

3.2.2 获取App信息

URL : http://{portal_address}/openapi/v1/apps Method : GET Request Params : appIds false String appId列表,以逗号分隔,如果为空则返回所有App信息 返回值Sample:
 \"name\":\"first_app\", \"appId\":\"100003171\", \"orgId\":\"development\", \"orgName\":\"研发部\", \"ownerName\":\"apollo\", \"ownerEmail\":\"test@test.com\", \"dataChangeCreatedBy\":\"apollo\", \"dataChangeLastModifiedBy\":\"apollo\", \"dataChangeCreatedTime\":\"2019-05-08T09:13:31.000+0800\", \"dataChangeLastModifiedTime\":\"2019-05-08T09:13:31.000+0800\" \"name\":\"apollo-demo\", \"appId\":\"100004458\", \"orgId\":\"development\", \"orgName\":\"产品研发部\", \"ownerName\":\"apollo\", \"ownerEmail\":\"apollo@cmcm.com\", \"dataChangeCreatedBy\":\"apollo\", \"dataChangeLastModifiedBy\":\"apollo\", \"dataChangeCreatedTime\":\"2018-12-23T12:35:16.000+0800\", \"dataChangeLastModifiedTime\":\"2019-04-08T13:58:36.000+0800\"]

3.2.3 获取集群接口

URL : http://{portal_address}/openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName} Method : GET Request Params :无 返回值Sample:
 \"name\":\"default\", \"appId\":\"100004458\", \"dataChangeCreatedBy\":\"apollo\", \"dataChangeLastModifiedBy\":\"apollo\", \"dataChangeCreatedTime\":\"2018-12-23T12:35:16.000+0800\", \"dataChangeLastModifiedTime\":\"2018-12-23T12:35:16.000+0800\"}

3.2.4 创建集群接口

可以通过此接口创建集群,调用此接口需要授予第三方APP对目标APP的管理权限。

URL : http://{portal_address}/openapi/v1/envs/{env}/apps/{appId}/clusters Method : POST Request Params :无 请求内容(Request Body, JSON格式) : name true String Cluster的名字 appId true String Cluster所属的AppId dataChangeCreatedBy true String namespace的创建人,格式为域账号,也就是sso系统的User ID 返回值 Sample :
 \"name\":\"someClusterName\", \"appId\":\"100004458\", \"dataChangeCreatedBy\":\"apollo\", \"dataChangeLastModifiedBy\":\"apollo\", \"dataChangeCreatedTime\":\"2018-12-23T12:35:16.000+0800\", \"dataChangeLastModifiedTime\":\"2018-12-23T12:35:16.000+0800\"}

3.2.5 获取集群下所有Namespace信息接口

URL : http://{portal_address}/openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces Method: GET Request Params: 无 返回值Sample:
 \"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\"]

3.2.6 获取某个Namespace信息接口

URL : http://{portal_address}/openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName} Method : GET Request Params :无 返回值Sample :
 \"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\" }

3.2.7 创建Namespace

可以通过此接口创建Namespace,调用此接口需要授予第三方APP对目标APP的管理权限。

URL : http://{portal_address}/openapi/v1/apps/{appId}/appnamespaces Method : POST Request Params :无 请求内容(Request Body, JSON格式) : name true String Namespace的名字 appId true String Namespace所属的AppId format true String Namespace的格式,只能是以下类型: properties、xml、json、yml、yaml isPublic true boolean 是否是公共文件 comment false String Namespace说明 dataChangeCreatedBy true String namespace的创建人,格式为域账号,也就是sso系统的User ID 返回值 Sample :
 \"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\"}
返回值说明 :

如果是properties文件,name = ${appId所属的部门}.${传入的name值} ,例如调用接口传入的name=xy-z, format=properties,应用的部门为框架(FX),那么name=FX.xy-z

本文链接: http://apolloapi.immuno-online.com/view-733035.html

发布于 : 2021-03-25 阅读(0)