# 开发

基于 HeyCloud 进行开发的主要任务就是调用各 API 接口。

HeyCloud API 基于 HTTP 协议,数据交换主要使用 JSON 格式,只要是熟悉 HTTP 调用的开发者都可以很容易地进行开发。

下面是使用 NodeJS 封装一个简单的通用 HeyCloud API 调用类的示例:

import axios from 'axios';

class ApiClient {

  init(baseURL) {
    this._baseURL = baseURL;

    if (/^(http|https):\/\/[^\s]*$/.test(baseURL)) {
      this._inited = true;
    } else {
      this._inited = false;
    }
  }

  async request(url, config = {}) {
    if (!this._inited) {
      const e = new Error('HeyCloud API 未初始化');
      e.code = 'HEYCLOUD_API_NOT_INITIALIZED';
      throw e;
    }

    config.baseURL = this._baseURL;
    config.url = url;

    const resp = await axios(config);
    return resp.data;
  }

}

const api = new ApiClient();

export default api;

如果我们把这个封装类放到一个名叫 @geohey/heycloud-js-sdk 的库中去调用,那么调用方法类似于下面的代码:

import { api } from '@geohey/heycloud-js-sdk';

const items = await api.request('data/vdataset/list', {
  params: {
    'offset': pageIndex * pageCount,
    'limit': pageCount + 1,
  },
  headers: {
    'x-heycloud-admin-session': 'nvvaZIgRzAOTVW5oZvTIgo3JBuHoe0y+',
    'x-heycloud-account-id': '*',
  },
});