前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nestjs集成superagent

nestjs集成superagent

原创
作者头像
挥刀北上
发布2021-12-15 09:58:18
1K0
发布2021-12-15 09:58:18
举报
文章被收录于专栏:Node.js开发Node.js开发

最近在开发人脸识别设备,需要将服务器的人员数据下发到设备,这里面有个接口需要提供图片流,我的图片是存在七牛云上面的,根据用户的avatorid我可以找到图片存在七牛云的url。

然后我首先想到的是使用axios来请求图片,然后将图片转换成流,但是测试没有通过,这里面主要的事axios不支持pipe,然后我尝试了request库,但是发现这个库已经废弃了,开发团队已经不维护了,不过依然可以使用,这里面发现了一个小问题,因为nestjs的模块化是使用的es6的模块化,也就是使用import、export导入导出,我直接是这样使用的:

代码语言:javascript
复制
import request from 'request'

发现一直导入不了,后面索性换成superagent这个请求库,然后我查阅互联网,发现了正确的导入方式:

代码语言:javascript
复制
import * as superagent from 'superagent'

这样就可以使用了。

在express开发的服务器中返回流的方法如下:

代码语言:javascript
复制
app.get('/qq',(req,res)=>{
    superagent("https://gimg2.baidu.com/image_search/src=http%3A%2F%2F5b0988e595225.cdn.sohucs.com%2Fimages%2F20181225%2F03850f7e4c7c44dc8045787e86f8feda.jpeg&refer=http%3A%2F%2F5b0988e595225.cdn.sohucs.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg").pipe(res);
})

在nestjs中如下:

代码语言:javascript
复制
  @Post("image/download")
  @UseInterceptors(FileInterceptor('files')) //表单方式接收 data
  async imageDownload(@Body() body,@Res() response): Promise<any>{
    try {
      console.log("设备尝试从服务器获取图片:alf/image/download")
      let key:string = process.env.alfKey;
      //参数解密
      let result =  this.alfervice.decryption(body.data, key);
      console.log("--", result)
      if(!(result && result['token'])){
          return;
      }
      // return (await this.alfervice.getImage(result['avatarId'])).pipe(response);
      superagent(`http://alfuser.quchangguan.cn/${result['avatarId']}`).pipe(response)
    } catch (error) {
      console.log("错误record:", error)
      throw error;
    }
  }

使用spueragent的流的话需要使用响应函数的response,因为nestjs的返回是被封装起来的,不能直接访问response,要使用的话,需要使用@res修饰器是函数中暴露response,这样才能使用response。

以上便是nestjs中使用superagent的pipe方法的过程,希望对你有所帮助。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档