6.4 CdifUtil.createServiceClient

方法说明

查找并创建一个系统上其他服务应用的client对象,并使用该client对象对系统中的其他服务应用发起API请求调用

方法原型

CdifUtil.createServiceClient(opts, callback);

返回类型

方法描述

CdifUtil.createServiceClient可用于创建一个系统上其他服务应用的client对象,并对系统中的其他服务应用发起API请求调用。取决于分布式部署的服务应用所在的不同位置,对系统上服务应用的API请求在后台可以是HTTP调用,或者本地调用。用户不需要关心调用的具体实现细节。本方法可用于从系统上部署的其他服务中获取JSON格式的各类数据资源并对其做进一步处理。

optsJSON对象中可接受以下参数:
deviceID: 应用的UUID,字符串类型。可从CEAMS系统上“我的应用”页面中获取,
serviceID: 应用中服务的名称,字符串类型。可从系统上应用的API文档中获取,
appKey: 调用方的appKey,用于对用户鉴权,本用户的appKey可从CEAMS系统上“我的应用”页面中获取。

callback方法的原型如下:
callback(error, client);

error不为null时代表请求产生了错误,错误的详细信息包含在error.message

client为创建成功后得到的service client对象。用于后续对该服务应用发起API调用请求。

client对象中方法的原型如下: client.invoke(options, invokeCallback);

其中:
optionsJSON对象中包含以下字段:
actionName: 字符串类型,内容为需要调用的方法名称
input: JSON对象类型,包含输入参数的内容

invokeCallback的原型如下

invokeCallback(error,data);

error不为null时代表请求产生了错误,错误的详细信息包含在error.message

data为从服务应用的API调用返回数据JSON对象

代码范例

以下代码范例创建一个service client并提交/执行一个API请求,并且从响应中获取JSON格式的数据:

CdifUtil.createServiceClient({
    deviceID: '2f56fe9e-980c-5aa2-a404-14b2138f8c92',
    serviceID: 'urn:flightstats-com:serviceID:flightStatus',
    appKey: 'accba6821289ef4fb2c6742c2a'
  }, function(err, client) {
    if (err) return;
    client.invoke({
      actionName: 'scheduledFlightsByDepartureDate',
      input: {
        carrierCode: carrierCode,
        flight: flight,
        year: year,
        month: month,
        date: date
      }
    }, function(err, data) {
      if (err) return callback(new Error(err.message));
      return callback(null, data);
  });

错误信息

包含在callbackerror对象中。

同步/异步

异步操作。