参考官网:https://www.apolloconfig.com/#/zh/usage/apollo-open-api-platform
公共接口访问密钥配置(开发平台授权管理)
Apollo管理员在 http://{portal_address}/open/manage.html 页面给token赋权。赋权之后,第三方应用就可以通过Apollo提供的Http REST接口来管理已授权的Namespace的配置了。
对应数据库表:consumer*

token: f74469cfc811af4d66f43b4d5a230a04b195ddeb
普通http访问rest,设置 header
任何语言的第三方应用都可以调用Apollo的Open API,在调用接口时,需要设置注意以下两点:
- Http Header中增加一个Authorization字段,字段值为申请的token
- Http Header的Content-Type字段需要设置成application/json;charset=UTF-8
公共接口调用client 端
引入apollo-openapi依赖:
点击复制错误复制成功<dependency><groupId>com.ctrip.framework.apollo</groupId><artifactId>apollo-openapi</artifactId><version>1.7.0</version></dependency>
在程序中构造ApolloOpenApiClient:String portalUrl = "http://localhost:8070"; // portal urlString token = "e16e5cd903fd0c97a116c873b448544b9d086de9"; // 申请的tokenApolloOpenApiClient client = ApolloOpenApiClient.newBuilder().withPortalUrl(portalUrl).withToken(token).build();
公共接口
参数说明
| 参数名 | 参数说明 | 参数名 |
|---|---|---|
| env | 所管理的配置环境 | env |
| appId | 所管理的配置AppId | appId |
| clusterName | 所管理的配置集群名, 一般情况下传入 default 即可。如果是特殊集群,传入相应集群的名称即可 | clusterName |
| namespaceName | 所管理的Namespace的名称,如果是非properties格式,需要加上后缀名,如sample.yml | namespaceName |
客户端 apiclient 使用小例
package com.hbte.sharp.demo.apollo;import com.ctrip.framework.apollo.openapi.client.ApolloOpenApiClient;import com.ctrip.framework.apollo.openapi.dto.OpenItemDTO;/*** 测试api** @author Bruce* @date 2021/5/27 17:30*/public class TestClientApi {public static void main(String[] args) {setConfig();}public static void setConfig() {String portalUrl = "http://localhost:8070"; // portal urlString token = "f74469cfc811af4d66f43b4d5a230a04b195ddeb"; // 申请的tokenApolloOpenApiClient client = ApolloOpenApiClient.newBuilder().withPortalUrl(portalUrl).withToken(token).build();OpenItemDTO itemDto = new OpenItemDTO();itemDto.setComment("后端api发布");itemDto.setKey("content");itemDto.setValue("spring:\n" +" application:\n" +" name: apollo-adminservice\n" +" profiles:\n" +" active: ${apollo_profile}\n" +"\n" +"ctrip:\n" +" appid: 100003172\n" +" \n" +"server:\n" +" port: 8090\n" +"\n" +"logging:\n" +" file:\n" +" name: /opt/logs/100003172/apollo-adminservice.log\n" +"\n" +"eureka:\n" +" instance:\n" +" hostname: ${hostname:localhost}\n" +" preferIpAddress: true\n" +" status-page-url-path: /info\n" +" health-check-url-path: /health\n" +" client:\n" +" serviceUrl:\n" +" # This setting will be overridden by eureka.service.url setting from ApolloConfigDB.ServerConfig or System Property\n" +" # see com.ctrip.framework.apollo.biz.eureka.ApolloEurekaClientConfig\n" +" defaultZone: http://${eureka.instance.hostname}:8080/eureka/\n" +" healthcheck:\n" +" enabled: true\n" +" eurekaServiceUrlPollIntervalSeconds: 60\n" +"\n" +"management:\n" +" health:\n" +" status:\n" +" order: DOWN, OUT_OF_SERVICE, UNKNOWN, UP\n");itemDto.setDataChangeCreatedBy("apollo");client.createOrUpdateItem("test-demo", "DEV", "register", "yaml.yaml", itemDto);}}
注意,可能汇报 403 访问拒绝,此时不要慌,进入管理的项目的相应 namespace 点一下授权!!!

