NodeJS SDK
下载地址
IMM Service 的 NodeJS SDK 让 NodeJS 开发人员可以非常方便地使用 NodeJS 程序操作服务。开发者可以直接使用 npm 添加 SDK。目前,SDK 建议使用 6.x 以上版本,已经开源到 github。
操作步骤
为快速开始使用 IMM NodeJS SDK,请按照如下步骤进行。
步骤 1 创建阿里云账号
具体方法请参考 阿里云账号注册流程。
为了更好地使用阿里云服务,建议尽快完成实名认证,否则部分阿里云服务将无法使用。具体实名认证流程,请参考 这里。
步骤 2 获取阿里云访问密钥
为了使用 IMM Service NodeJS SDK,您必须申请阿里云的 访问密钥。
登录阿里云 密钥管理页面。选择一对用于 SDK 的访问密钥对。如果没有,请创建一对新访问密钥,且保证它处于启用状态。有关如何创建访问密钥,参见 创建访问密钥。
该密钥对会在下面的步骤使用,且需要保管好,不能对外泄露。另外,您可以参考 SDK 配置了解更多 SDK 如何使用访问密钥的信息。
步骤 3 创建项目
在使用 IMM 服务 NodeJS SDK 之前,请先在控制台上创建好项目(Project)。有关如何创建 Project ,参见 创建项目 。
步骤 4 安装 Imm Service NodeJS SDK
$ npm i @alicloud/pop-core --save
步骤 5 创建文档转换任务
API 文档参考:CreateOfficeConversionTask
const { RPCClient } = require('@alicloud/pop-core');
var client = new RPCClient({
endpoint:'http://imm.cn-hangzhou.aliyuncs.com',
accessKeyId: your_app_key_id,
accessKeySecret: your_app_key_secret,
apiVersion: '2017-09-06'
});
try{
var params = {
Project: "convertOfficeProject",
SrcUri: "oss://preview-office-bucket/docs/input/demo.pptx",
TgtType: "vector",
TgtUri: "oss://preview-office-bucket/docs/output/demo_pptx"
};
var result = await client.request("CreateOfficeConversionTask", params);
console.log(result);
}catch(err){
console.log(err);
}
步骤 6 查询文档转换任务
API 文档参考:GetOfficeConversionTask
const { RPCClient } = require('@alicloud/pop-core');
// 查询文档转换任务状态
async function getOfficeConversionTask(project, taskId){
var client = new RPCClient({
endpoint:'http://imm.cn-hangzhou.aliyuncs.com',
accessKeyId: your_app_key_id,
accessKeySecret: your_app_key_secret,
apiVersion: '2017-09-06'
});
try{
var params = {
Project: project,
TaskId: taskId
};
var result = await client.request("GetOfficeConversionTask", params);
console.log(result);
}catch(err){
console.log(err);
}
}
getOfficeConversionTask("convertOfficeProject", "taskId")
轮询文档转换任务状态
直到状态不为 Running 或达到设置的次数, 状态为 Finished 返回 true,状态为 Failed 或者达到重试次数返回 false,其他情况抛出异常。
async function checkTaskFinished(project, taskId, reTryTimes) {
var result = {};
while(reTryTimes-- > 0){
await delay(1000);
result = await getOfficeConversionTask(project, taskId);
if(result && result.Status == "Finished"){
return true;
}
if(result && result.Status == "Failed"){
return false;
}
}
return false;
async function delay(ms) {
return new Promise((a, b) => {
setTimeout(a, ms);
});
}
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论