1.4.3 • Published 1 year ago

apollo-node-client v1.4.3

Weekly downloads
9
License
MIT
Repository
github
Last release
1 year ago

apollo-node-client

Node.js Client for Apollo

install

$ npm install apollo-node-client --save

Examples

examples

Usage

实例化 ConfigService

const { ConfigService } = require('apollo-node-client');

const service = new ConfigService({
  configServerUrl: 'http://localhost:8080/',
  appId: 'SampleApp',
  clusterName: 'default',
  secret: 'cf86d564d10a46d4a5989dfdeed3a3a2'
});

获取默认 namespace 的配置(application

const config = await service.getAppConfig();
config.getAllConfig();                                          // Map(1) { 'mysql.user' => 'root' }
console.log(config.getProperty('mysql.user'));                  // root
console.log(config.getProperty('mysql.missing', 'default'));    // default

获取 properties 格式 namespace 的配置

const config = await service.getConfig('application');
config.getAllConfig();                                          // Map(1) { 'mysql.user' => 'root' }
console.log(config.getProperty('mysql.user'));                  // root
console.log(config.getProperty('mysql.missing', 'default'));    // default

获取 json 格式 namespace 的配置

const config = await service.getConfig('config.json');
config.getAllConfig();                                          // { mysql: { user: 'root' } }
console.log(config.getProperty('mysql.user'));                  // root
console.log(config.getProperty('mysql.missing', 'default'));    // default

获取 xml/yml/yaml/txt 格式 namespace 的配置

const config = await service.getConfig('config.txt');
config.getAllConfig();                                          // txt config
console.log(config.getProperty('', 'default'));                 // txt config
console.log(config.getProperty());                              // txt config

指定灰度发布的服务 ip

const config = await service.getConfig('application', '192.168.3.4');
config.getAllConfig();                                          // Map(1) { 'mysql.user' => 'root' }
console.log(config.getProperty('mysql.user'));                  // root
console.log(config.getProperty('mysql.missing', 'default'));    // default

监听配置变化事件

config.addChangeListener((changeEvent) => {
  for (const key of changeEvent.changedKeys()) {
    const change = changeEvent.getChange(key);
    if (change) {
      console.log(`namespace: ${change.getNamespace()},
        changeType: ${change.getChangeType()},
        propertyName: ${change.getPropertyName()},
        oldValue: ${change.getOldValue()},
        newValue: ${change.getNewValue()}`);
    }
  }
});

API

Class: ConfigService

  • new ConfigService( options )

    • options \

      • configServerUrl \ Apollo 配置服务的地址
      • appId \ 应用的 appId
      • [clusterName] \ 集群名
      • [secret] \ 服务端密钥 access key
    • Returns: ConfigService

  • configService.getAppConfig( ip )

    • [ip] \ 应用部署的机器ip

    • Returns: Promise\ 默认的 namespaceapplication

  • configService.getConfig( namespaceName, ip )

    • namespaceName \ Namespace的名字,以后缀名判断是什么类型格式的 Config。如果没有后缀名,默认为 properties,目前支持 .json.properties.xml.yml.yaml.txt
    • [ip] \ 应用部署的机器ip

    • Returns: Promise\<PropertiesConfig | JSONConfig | PlainConfig>


Class: PropertiesConfig

  • propertiesConfig.getAllConfig()

    • Returns: Map\<string, string>
  • propertiesConfig.getProperty( key, defaultValue )

    • key \ 要获取的配置的 key
    • [defaultValue] \ 默认值,当传入的 key 不存在时,会返回 defaultValue

    • Returns: undefined | string

  • propertiesConfig.addChangeListener( handle )

    • handle ( changeEvent: ConfigChangeEvent\ ) => void 监听配置变化事件的回调函数

    • Returns: void


Class: JSONConfig

  • jsonConfig.getAllConfig()

    • Returns: JSONValueType
  • jsonConfig.getProperty( key, defaultValue )

    • key \ 要获取的配置的 key
    • [defaultValue] \ 默认值,当传入的 key 不存在时,会返回 defaultValue

    • Returns: undefined | JSONValueType

  • jsonConfig.addChangeListener( handle )

    • handle ( changeEvent: ConfigChangeEvent\ ) => void 监听配置变化事件的回调函数

    • Returns: void


Class: PlainConfig

  • plainConfig.getAllConfig()

    • Returns: string
  • plainConfig.getProperty( key, defaultValue )

    • key \ 兼容其他类型的 Config,不做校验,传入任意 key 都会返回整个配置文本内容
    • [defaultValue] \ 默认值,当配置不存在时,会返回 defaultValue

    • Returns: undefined | string


Class: ConfigChangeEvent

  • configChangeEvent.getNamespace()

    • Returns: string
  • configChangeEvent.changedKeys()

    • Returns: string[]
  • configChangeEvent.getChange()

    • Returns: undefined | ConfigChange\

Class: ConfigChange\

  • configChange.getNamespace()

    • Returns: string
  • configChange.getPropertyName()

    • Returns: string
  • configChange.getOldValues()

    • Returns: undefined | T
  • configChange.getNewValue()

    • Returns: undefined | T
  • configChange.getChangeType()

    • Returns: PropertyChangeType

Enum: PropertyChangeType

  • propertyChangeType.ADDED

  • propertyChangeType.MODIFIED

  • propertyChangeType.DELETED


Contributing

Contributions are always welcome!

License

MIT

1.4.3

1 year ago

1.4.2

1 year ago

1.4.1

1 year ago

1.4.0

1 year ago

1.3.0

2 years ago

1.2.0

3 years ago

1.1.2

3 years ago

1.1.1

4 years ago

1.1.0

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago

0.0.13

4 years ago

0.0.12

4 years ago

0.0.11

4 years ago

0.0.10

4 years ago

0.0.9

4 years ago

0.0.8

4 years ago

0.0.5

4 years ago

0.0.7

4 years ago

0.0.6

4 years ago

0.0.4

4 years ago

0.0.3

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago