4000-520-616
欢迎来到免疫在线!(蚂蚁淘生物旗下平台)  请登录 |  免费注册 |  询价篮
主营:原厂直采,平行进口,授权代理(蚂蚁淘为您服务)
咨询热线电话
4000-520-616
当前位置: 首页 > 新闻动态 >
新闻详情
Apollo通过客户端openapi方式修改、上传、获取配置_进..._CSDN博客
来自 : CSDN技术社区 发布时间:2021-03-25
添加权限

apollo管理员账户进入http://{apollo_protal_url}/open/manage.html 创建第三方应用 生成一个openapi的token 如下图所示

\"\"

第三方应用id 唯一标示 没啥用 字母数字即可部门 应用归属部门 用于筛选第三方应用名称 应用名称 一个简单的描述项目负责人 openapi操作的用户 该用户必须具有该项目的操作全选 没有的话需要在apollo项目中授权添加 否则调用时会出现403错误。token 自定生成 openapi客户端参数被管理appid 已在apollo中存在的需要操作的apollo的应用id。被管理的Namespace openapi可操作的namesapce 授权类型为namespace时 最少填一个。授权类型 namespace 指定namesapce app 所有namespace环境 指定允许操作的配置环境

 

创建apollo客户端
import com.ctrip.framework.apollo.openapi.client.ApolloOpenApiClient;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Profile;/** * description: apollo openapi连接 * author: lizz * date: 2020/7/15 11:27 */ Configuration Profile({ dev , test }) //运行环境public class ApolloConfig { /** * apollo portal url * apollo 访问地址 **/ Value( ${appkey.apollo.url} ) private String portalUrl; /** * token apollo中添加的openapi token **/ Value( ${appkey.apollo.token} ) private String token; Bean public ApolloOpenApiClient apolloOpenApiClient() { ApolloOpenApiClient client ApolloOpenApiClient.newBuilder() .withPortalUrl(portalUrl) .withToken(token) .build(); return client; }}
操作接口
/** * description: 操作apollo配置 * author: lizz * date: 2020/7/15 11:30 */ RestController RequestMapping(value apollo ) Profile({ dev , test }) //内部环境使用public class ApolloController { private static final Logger logger LoggerFactory.getLogger(ApolloController.class); //apollo中项目id private final static String appId framework-gateway //apollo操作用户 private final static String opUser lizz //apollo中集群名称 apollo默认集群为default private final static String cluster aliyun //apollo中集群内namespace名称 private final static String namespace namespace-zone1 //apollo操作客户端 private ApolloOpenApiClient apolloClient; public ApolloController(ApolloOpenApiClient client) { this.apolloClient client; } /** * 获取环境列表 如 * [{ clusters :[ huawei , default ], env : PRO },{ clusters :[ default ], env : DEV }] * param server apollo中服务id * return */ GetMapping( /envclusters/{server} ) public Object getEnvclusters( PathVariable String server) { return JSON.toJSONString(apolloClient.getEnvClusterInfo(server)); } /** * 向apollo中新增配置项 为未发布状态。 * post uri:apollo/dev/add * param env 指定apollo的数据环境 * return */ PostMapping( /{env}/add} ) public Object addParam( PathVariable String env) { OpenItemDTO openItemDTO new OpenItemDTO(); openItemDTO.setKey( timeout openItemDTO.setValue( 100 openItemDTO.setComment( 超时时间 openItemDTO.setDataChangeCreatedBy(opUser); OpenItemDTO item apolloClient.createItem(appId, env, cluster, namespace, openItemDTO); return JSON.toJSONString(item); } /** * 修改apollo中配置项 为未发布状态。 * post uri:apollo/dev/update * param env 指定apollo的数据环境 * return */ PostMapping( /{env}/update ) public Object updateParam() { OpenItemDTO openItemDTO new OpenItemDTO(); openItemDTO.setKey( timeout openItemDTO.setValue( 200 openItemDTO.setComment( 超时时间 openItemDTO.setDataChangeCreatedBy(opUser); apolloClient.createOrUpdateItem(appId, env, cluster, namespace, openItemDTO); return JSON.toJSONString(openItemDTO); } /** * 获取apollo中namespace的所有配置项 * param env 指定apollo的数据环境 * return */ GetMapping( /{env}/namespace ) public Object getAllNameSpace() { return JSON.toJSONString(apolloClient.getNamespace(appId, env, cluster, application } /** * 获取某一项配置 * param env 指定apollo的数据环境 * param key 配置项key * return */ GetMapping( /{env}/getParam ) public Object getParam(String env,String key) { OpenItemDTO getItem apolloClient.getItem(appId, env, cluster, namespace, key); return JSON.toJSONString(getItem); } /** * 刷新发布配置 * * param env 指定apollo的数据环境 * return */ public Object releaseParam(String env) { NamespaceGrayDelReleaseDTO namespaceGrayDelReleaseDTO new NamespaceGrayDelReleaseDTO(); //配置版本名称 namespaceGrayDelReleaseDTO.setReleaseTitle(System.currentTimeMillis() -release //刷新说明 namespaceGrayDelReleaseDTO.setReleaseComment( auto release namespaceGrayDelReleaseDTO.setReleasedBy(opUser); OpenReleaseDTO openReleaseDTO apolloClient.publishNamespace(appId, env, cluster, namespace, namespaceGrayDelReleaseDTO); return JSON.toJSONString(openReleaseDTO); }} 
上面的参考代码中 静态参数可以根据需要使用入参的方式传递到方法中。apolloClient中还有很多方法可以自己探索 https://github.com/ctripcorp/apollo/wiki

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

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