热卖商品
新闻详情
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)
最新动态
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
品牌分类
Pharmaceutical
联络我们
服务热线:4000-520-616
(限工作日9:00-18:00)
QQ :1570468124
手机:18915418616