更新时间:2024-10-17 GMT+08:00
分享

Node.js SDK

本章节介绍新版Node.js SDK,您可以参考本章节进行快速集成开发。

准备工作

  • 注册华为账号并开通华为云,并完成实名认证,账号不能处于欠费或冻结状态。
  • 已具备开发环境,支持Node 10.16.1 及其以上版本。
  • 登录“我的凭证 > 访问秘钥”页面,获取Access Key(AK)和Secret Access Key(SK)。
    图1 获取AK、SK
  • 登录“我的凭证”页面,获取“IAM用户名”“账号名”以及待使用区域的“项目ID”。调用服务时会用到这些信息,请提前保存。

    本样例以“华北-北京四”区域为例,获取对应的项目ID(project_id)。

    图2 我的凭证

安装SDK

使用SDK前,需要安装“@huaweicloud/huaweicloud-sdk-core”和“@huaweicloud/huaweicloud-sdk-frs”。

推荐您使用 npm 安装 SDK。

npm install @huaweicloud/huaweicloud-sdk-core
npm i @huaweicloud/huaweicloud-sdk-frs

开始使用

在开始使用之前,请确保您安装的是最新版本的SDK。使用过时的版本可能会导致兼容性问题或无法使用最新功能。您可以通过运行以下命令来检查并更新SDK至最新版本。

npm list @huaweicloud/huaweicloud-sdk-core
npm list @huaweicloud/huaweicloud-sdk-frs
npm update @huaweicloud/huaweicloud-sdk-core
npm update @huaweicloud/huaweicloud-sdk-frs

详细的SDK介绍请参见SDK中心Node.js SDK使用指导Node.js SDK视频指导

  1. 导入依赖模块
    const core = require('@huaweicloud/huaweicloud-sdk-core');
    const frs = require("@huaweicloud/huaweicloud-sdk-frs");
  2. 配置客户端链接参数
    • 默认配置
      const client = frs.FrsClient.newBuilder()
    • 网络代理(可选)
      // 使用代理服务器(可选)
      client.withProxyAgent("http://username:password@proxy.huaweicloud.com:8080")
    • SSL配置(可选)
      // 配置跳过服务端证书验证(可选)
      process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"
  3. 配置认证信息
    配置AK、SK、project_id信息。华为云通过AK识别用户的身份,通过SK对请求数据进行签名验证,用于确保请求的机密性、完整性和请求者身份的正确性。AK、SK和project_id获取方法请参见准备工作
    const ak = process.env.HUAWEICLOUD_SDK_AK;
    const sk = process.env.HUAWEICLOUD_SDK_SK;
    const project_id = process.env.PROJECT_ID;
    const credentials = new core.BasicCredentials()
                         .withAk(ak)
                         .withSk(sk)
                         .withProjectId(project_id)
    • 认证用的 ak 和sk 硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全。
    • 本示例以 ak 和 sk 保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK,HUAWEICLOUD_SDK_SK和PROJECT_ID。
    图3 Windows环境新建环境变量
  4. 初始化客户端
    指定云服务endpoint方式
    // 指定终端节点,以 FRS 服务北京四的 endpoint 为例
    const endpoint = "https://face.cn-north-4.myhuaweicloud.com";
    const client = frs.FrsClient.newBuilder()
                                .withCredential(credentials)
                                .withEndpoint(endpoint)
                                .build();

    endpoint是华为云各服务应用区域和各服务的终端节点,详情请查看 地区和终端节点

  5. 发送请求并查看响应
    // 以调用人脸检测接口 DetectFaceByBase64 为例
    const request = new frs.DetectFaceByBase64Request();
    const body = new frs.FaceDetectBase64Req();
    body.withImageBase64("图片的base64编码");
    request.withBody(body);
    const result = client.detectFaceByBase64(request);
    result.then(result => {
        console.log("JSON.stringify(result)::" + JSON.stringify(result));
    }).catch(ex => {
        console.log("exception:" + JSON.stringify(ex));
    });

    使用人脸比对SDK时,image1、image2参数需为相同类型,即同为url、base64或file。

SDK demo 代码解析

  • 人脸检测
    const request = new frs.DetectFaceByBase64Request();
    const body = new frs.FaceDetectBase64Req();
    body.withImageBase64("图片的base64编码");
    request.withBody(body);
    const result = client.detectFaceByBase64(request);
    result.then(result => {
        console.log("JSON.stringify(result)::" + JSON.stringify(result));
    }).catch(ex => {
        console.log("exception:" + JSON.stringify(ex));
    });
  • 人脸比对
    const request = new frs.CompareFaceByBase64Request();
    const body = new frs.FaceCompareBase64Req();
    body.withImage1Base64("图片1的base64编码");
    body.withImage2Base64("图片2的base64编码");
    request.withBody(body);
    const result = client.compareFaceByBase64(request);
    result.then(result => {
        console.log("JSON.stringify(result)::" + JSON.stringify(result));
    }).catch(ex => {
        console.log("exception:" + JSON.stringify(ex));
    });
  • 人脸搜索
    const request = new frs.SearchFaceByBase64Request();
    const body = new frs.FaceSearchBase64Req();
    body.withImageBase64("图片的base64编码");
    request.withBody(body);
    const result = client.searchFaceByBase64(request);
    result.then(result => {
        console.log("JSON.stringify(result)::" + JSON.stringify(result));
    }).catch(ex => {
        console.log("exception:" + JSON.stringify(ex));
    });
  • 创建人脸库
    const request = new frs.CreateFaceSetRequest();
    const body = new frs.CreateFaceSetReq();
    body.withFaceSetName("人脸库名称");
    request.withBody(body);
    const result = client.createFaceSet(request);
    result.then(result => {
        console.log("JSON.stringify(result)::" + JSON.stringify(result));
    }).catch(ex => {
        console.log("exception:" + JSON.stringify(ex));
    });
  • 查询人脸库
    const request = new frs.ShowFaceSetRequest();
    request.faceSetName = "人脸库名称";
    const result = client.showFaceSet(request);
    result.then(result => {
        console.log("JSON.stringify(result)::" + JSON.stringify(result));
    }).catch(ex => {
        console.log("exception:" + JSON.stringify(ex));
    });
  • 查询所有人脸库
    const request = new frs.ShowAllFaceSetsRequest();
    const result = client.showAllFaceSets(request);
    result.then(result => {
        console.log("JSON.stringify(result)::" + JSON.stringify(result));
    }).catch(ex => {
        console.log("exception:" + JSON.stringify(ex));
    });
  • 删除人脸库
    const request = new frs.DeleteFaceSetRequest();
    request.faceSetName = "人脸库名称";
    const result = client.deleteFaceSet(request);
    result.then(result => {
        console.log("JSON.stringify(result)::" + JSON.stringify(result));
    }).catch(ex => {
        console.log("exception:" + JSON.stringify(ex));
    });
  • 添加人脸
    const request = new frs.AddFacesByBase64Request();
    const body = new frs.AddFacesBase64Req();
    body.withImageBase64("图片的base64编码");
    request.withBody(body);
    const result = client.addFacesByBase64(request);
    result.then(result => {
        console.log("JSON.stringify(result)::" + JSON.stringify(result));
    }).catch(ex => {
        console.log("exception:" + JSON.stringify(ex));
    });
  • 删除人脸
    const request = new frs.DeleteFaceByFaceIdRequest();
    request.faceSetName = "人脸库名称";
    request.faceId = "人脸ID";
    const result = client.deleteFaceByFaceId(request);
    result.then(result => {
        console.log("JSON.stringify(result)::" + JSON.stringify(result));
    }).catch(ex => {
        console.log("exception:" + JSON.stringify(ex));
    });
  • 批量删除人脸
    const request = new frs.BatchDeleteFacesRequest();
    request.faceSetName = "人脸库名称";
    const body = new frs.DeleteFacesBatchReq();
    body.withFilter("过滤条件");
    request.withBody(body);
    const result = client.batchDeleteFaces(request);
    result.then(result => {
        console.log("JSON.stringify(result)::" + JSON.stringify(result));
    }).catch(ex => {
        console.log("exception:" + JSON.stringify(ex));
    });
  • 更新人脸
    const request = new frs.UpdateFaceRequest();
    request.faceSetName = "人脸库名称";
    const body = new frs.UpdateFaceReq();
    body.withFaceId("人脸库ID");
    request.withBody(body);
    const result = client.updateFace(request);
    result.then(result => {
        console.log("JSON.stringify(result)::" + JSON.stringify(result));
    }).catch(ex => {
        console.log("exception:" + JSON.stringify(ex));
    });
  • 查询人脸
    const request = new frs.ShowFacesByFaceIdRequest();
    request.faceSetName = "人脸库名称";
    request.faceId = "人脸ID";
    const result = client.showFacesByFaceId(request);
    result.then(result => {
        console.log("JSON.stringify(result)::" + JSON.stringify(result));
    }).catch(ex => {
        console.log("exception:" + JSON.stringify(ex));
    });
  • 动作活体检测
    const request = new frs.DetectLiveByBase64Request();
    const body = new frs.LiveDetectBase64Req();
    body.withActions("动作代码顺序列表");
    body.withVideoBase64("视频数据的base64编码");
    request.withBody(body);
    const result = client.detectLiveByBase64(request);
    result.then(result => {
        console.log("JSON.stringify(result)::" + JSON.stringify(result));
    }).catch(ex => {
        console.log("exception:" + JSON.stringify(ex));
    });
  • 静默活体检测
    const request = new frs.DetectLiveFaceByBase64Request();
    const body = new frs.LiveDetectFaceBase64Req();
    body.withImageBase64("图片的base64编码");
    request.withBody(body);
    const result = client.detectLiveFaceByBase64(request);
    result.then(result => {
        console.log("JSON.stringify(result)::" + JSON.stringify(result));
    }).catch(ex => {
        console.log("exception:" + JSON.stringify(ex));
    });

SDK代码自动生成

API Explorer提供API检索及平台调试,支持全量快速检索、可视化调试、帮助文档查看和在线咨询。

您只需要在API Explorer中修改接口参数,即可自动生成对应的代码示例。同时,可在集成开发环境CloudIDE中完成代码的构建、调试和运行等操作。

图4 API Explorer

相关文档