# ecloud-sdk-cpp
**Repository Path**: chinamobile_ecloud/ecloud-sdk-cpp
## Basic Information
- **Project Name**: ecloud-sdk-cpp
- **Description**: 移动云OpenAPI平台的C++ SDK,可以让C++开发者无需关心API请求细节即可快速使用弹性云服务器、虚拟私有云等多个移动云服务。
- **Primary Language**: C++
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 9
- **Forks**: 1
- **Created**: 2022-09-21
- **Last Updated**: 2025-04-23
## Categories & Tags
**Categories**: web-dev-toolkits
**Tags**: None
## README
移动云开发者 C++ 软件开发工具包(C++ SDK)
欢迎使用移动云C++ SDK 。
移动云 C++ SDK 让您无需关心请求细节即可快速使用弹性云主机等多个移动云服务。
这里将向您介绍如何获取并使用移动云C++ SDK 。
## 使用前提
- 要使用移动云 C++ SDK ,您需要拥有移动云账号以及该账号对应的 Access Key(AK)和 Secret Key(SK)。请在移动云控制台 “我的凭证-访问密钥” 页面上创建和查看您的 AK&SK
。更多信息请查看 [访问密钥](https://ecloud.10086.cn/op-help-center/doc/article/49739) 。
- 移动云 C++ SDK 支持 **C++ 11** 及以上版本,要求安装**CMake 3.10**及以上版本。
## SDK 获取和安装
### 依赖的第三方库
`boost`、`cpprestsdk`、`spdlog`、`openssl`
### Linux安装SDK
#### 1、安装依赖包
所需依赖包除spdlog外都可以在各系统包管理工具中获取:
例如基于 Debian/Ubuntu 的系统
``` bash
sudo apt-get install libboost-all-dev libssl-dev libcpprest-dev
```
基于 CentOS 的系统
``` bash
sudo yum install libboost-all-dev libssl-dev libcpprest-dev
```
spdlog手动编译安装:
```bash
git clone https://github.com/gabime/spdlog.git
cd spdlog && mkdir build && cd build
cmake .. && make -j
```
spdlog安装,请参考:[gabime/spdlog官方说明](https://github.com/gabime/spdlog#install)
### 2、安装SDK包
```bash
git clone https://gitee.com/chinamobile_ecloud/ecloud-sdk-cpp.git
cd ecloud-sdk-cpp
mkdir build
cd build && cmake ..
make && make install
```
完成上述操作后,**C++ SDK 安装目录为 `/usr/local`**。
### Windows安装SDK
推荐使用vcpkg管理第三方依赖包,Windows操作系统安装vcpkg,请参考:
[microsoft/vcpkg官方说明](https://github.com/microsoft/vcpkg#quick-start-windows )
#### 1、安装依赖包
```bash
vcpkg install cpprestsdk boost openssl spdlog
```
#### 2、使用 CLion 进行编译
2.1、使用 CLion 打开 `ecloud-sdk-cpp` 目录
2.2、选择 `File` → `Settings`
2.3、选择 `Build, Execution, Deployment` → `CMake`
2.4、在 `CMake options` 中加入
2.5、`-DCMAKE_TOOLCHAIN_FILE={your vcpkg install dir}/scripts/buildsystems/vcpkg.cmake`
2.6、右键 `CMakeLists.txt` 选择 `Load CMake Project`
2.7、选择`Build`开始编译
#### 3、安装C++ SDK
编译完成后选择 `Build` → `Install`
完成上述操作后,**C++ SDK 安装目录为 `C:\Program File (x86)\ecloud-sdk-cpp`** 。
## 代码示例
- 使用如下代码查看绑定的虚拟网卡列表,首先指定地域(资源池编号)。
- 调用前请根据实际情况替换如下变量: ``、``、`poolId` 。
``` c++
#include
#include
#include
#include
#include
using namespace Ecloud::Sdk::ECS::V1;
using namespace Ecloud::Sdk::ECS::V1::Model;
using namespace Ecloud::Sdk::Core;
using namespace std;
int main(void)
{
auto config = std::make_shared();
config->setAccessKey("");
config->setSecretKey("");
config->setPoolId("poolId");
auto client = std::make_shared(config);
VmGetServerPortsRequest vmGetServerPortsRequest;
VmGetServerPortsPath vmGetServerPortsPath;
vmGetServerPortsPath.setServerId("test001");
vmGetServerPortsRequest.setVmGetServerPortsPath(vmGetServerPortsPath);
auto result = client->vmGetServerPorts(vmGetServerPortsRequest);
}
```
## 在线调试
[API开放平台](https://ecloud.10086.cn/op-oneapi-static/#/overview)
提供API检索及平台调试,支持全量快速检索、可视化调试、帮助文档查看等能力。
## 用户手册
* [1. 客户端连接参数](#1-客户端连接参数-top)
* [1.1 默认配置](#11-默认配置-top)
* [1.2 个性化配置](#12-个性化配置-top)
* [1.3 超时配置](#13-超时配置-top)
* [2. 客户端认证信息](#2-客户端认证信息-top)
[2.1 使用AK/SK](#2.1-使用AK/SK-top)
* [3. 客户端初始化](#3-客户端初始化-top)
* [4. 发送请求并查看响应](#4-发送请求并查看响应-top)
* [5. 异常处理](#5-异常处理-top)
### 1. 客户端连接参数
#### 1.1 默认配置
``` c++
auto config = std::make_shared();
config->setAccessKey("");
config->setSecretKey("");
config->setPoolId("poolId");
```
#### 1.2 个性化配置
``` c++
auto config = std::make_shared();
config->setAccessKey("");
config->setSecretKey("");
config->setPoolId("poolId");
auto httpRequest = std::make_shared();
auto client = std::make_shared(config,httpRequest);
```
#### 1.3 超时配置
``` c++
auto config = std::make_shared();
config->setAccessKey("");
config->setSecretKey("");
config->setPoolId("poolId");
config->setReadTimeOut(5);
```
### 2. 客户端认证信息
**认证参数说明**:
- `ak` - 移动云账号 Access Key
- `sk` - 移动云账号 Secret Key
- `poolId` - 服务部署区域(资源池编号)
#### 2.1 使用 AK 和 SK
``` C++
auto config = std::make_shared();
config->setAccessKey("");
config->setSecretKey("");
config->setPoolId("poolId");
```
### 3. 客户端初始化
``` c++
auto config = std::make_shared();
config->setAccessKey("");
config->setSecretKey("");
config->setPoolId("poolId");
auto client = std::make_shared(config);
```
### 4. 发送请求并查看响应
``` c++
VmGetServerPortsRequest vmGetServerPortsRequest;
VmGetServerPortsPath vmGetServerPortsPath;
vmGetServerPortsPath.setServerId("test001");
vmGetServerPortsRequest.setVmGetServerPortsPath(vmGetServerPortsPath);
auto result = client->vmGetServerPorts(vmGetServerPortsRequest);
```
### 5. 异常处理
SDK 对程序执行过程中各类异常以ApiException进行统一收口。
```c++
try {
response = client.VmGetServerPorts(request)
} catch (ApiException &e) {
std::cout << e.what() << std::endl;
}
```
### 6.使用CMakeLists构建工程
- 构建单个工程
```cmake
SET(BUILD_PRO ecloudsdkecs)
SET(BUILD_VERSION v1)
if (BUILD_PRO STREQUAL "all" OR BUILD_PRO STREQUAL "")
add_subdirectory(ecloudsdkcore)
message(STATUS "Build all Services")
else ()
add_subdirectory(ecloudsdkcore)
add_subdirectory(${BUILD_PRO}/src/${BUILD_VERSION})
endif ()
```
- 构建多个工程
```cmake
add_subdirectory(ecloudsdkcore)
add_subdirectory(ecloudsdkecs/src/v1)
add_subdirectory(ecloudsdktag/src/v1)
add_subdirectory(ecloudsdkims/src/v1)
```