什么是SuperAgent ?

superagent它是一个强大并且可读性很好的轻量级ajaxAPI,是一个关于HTTP方面的一个库,可运用于node.

var superagent = require('superagent');superagent.post('/api').send({'key': 'value'}).set('header_key', 'header_value').end(function(err, res) {if (err) {//产生错误执行语句} else {//执行语句}})

如何安装SuperAgent ?

$  npm  install  superagent    - - save

如何应用SuperAgent ?

在不同的应用场景,在发送请求的时候,会选择一个正确的请求方式,然后通过.end()函数来得到请求后的返回结果。

 superagent.get('/api').end(function(req,res){//do something})
superagent('GET','/api').end(function(req,res){//do something})

SuperAgent里面设置请求头的方式为:通过使用set()方法设置。

superagent.get('/api').set('Referer','https://www.baidu.com').set('Accept','image/01.jpg').end(function(req,res){//执行代码})
superagent.get('/api').set({'Referer','https://www.baidu.com','Accept','image/01.jpg'}).end(function(req,res){//执行代码})

GET请求方式

superagent.get(/api).query({name:'An'}).query({age:20}).query({sex:'male'}).end(cb)
superagent.get(/api).query({name:'An',age:20,sex:'male'}).end(cb)
superagent.get(/api).query('name=An&age=20&sex=male').end(cb)
superagent.get(/api).query('name=An').query('age=20').query('sex=male').end(cb)

HEAD请求

head请求也可以通过query()的方式进行传递参数。

POST/PUT请求

 superagent.post('/api').set('Accept','application/json').send('{"name":"An","age":20,"sex":"male"}').end(cb)
superagent.post('/api').send({name:"An",age:20,sex:"male"}).end(cb)
superagent.post('/api').send({name:"An"}).send({age:20}).sex({sex:'male'}).end(cb)

设置Content-Type的两种快速方式

1、type()方法

 superagent.post('/api').type('application/json').type('png')

2、accept()方法

superagent.post('/api').accept('application/json').accept('png')

分析处理response body

superagent可以帮你解析返回的数据,当前支持三种类型的数据application/x-www-form-urlencoded application/json 和multipart/form-data

1、JSON/Urlencoded

解析后的数据会以对象的形式存在,可以通过res.body来得到。

 '{"name":"An"}' //JSON String//解析 ==>{name:"An"   //JSON Object}

2、Multipart

这种格式的数据的处理,superagent是通过Formidable模块,它是主要处理文件上传的模块,大家可以去了解下,也是Node里面十分常用的模块,也很简单易上手。上传的文件的信息可以在res.files去查看。

Response的属性

  • res.text包含为被解析的响应数据

  • res.body上文提到了,包含解析的数据,但是目前只支持三种格式

  • res.header响应头,是一个Object

  • res.type & res.charset 类型和编码格式

  • res.status状态码

终止请求 req.abort() 暂停请求 req.timeout(ms) ms表示毫秒为单位的时间

可以通过pipe管道流入流出数据

我想大家都知道node里面有个核心特性就是stream,如果不知道的,可以参考:nodejs中流(stream)的理解,例如:

var fs = require('fs');var request = require('superagent');var postJson = fs.createReadStream('./postDataJson');var req= request.post('/api');req.accept('json');stream.pipe(req);
var fs = require('fs');var request = require('superagent');var getData = fs.createWriteStream('./getData');var res= request.get('/api');res.pipe(getData);

添加多个附件

superagent也提供了一些高级的API,如果你想添加多个附件可以使用attach(name,[path],[filename]),其中你可以通过filename来自定义上传后文件的文件名

request.post('/upload').attach('avator','/path/a.png','An.png').attach('photo','/path/b.png').end(cb)

复合请求

superagent也支持复合请求,比如你想上传一个带有你的姓名和邮箱的图片,那可以通过field(name,value)方法

request.post('/upload').field('name','An').field('age':20).attach('avator','/path/a.png','An.png').end(cb)

错误处理

有时候我们可能会因为不同的原因得到4XX或者5XX的错误,这个时候我们确实是可以从end(function(err,res){...})里的err得到错误信息,比如er.status错误的状态码啥的,但是有些时候我们想去处理这些错误,重新发送一个别的请求啥的,那么这个时候我们可以通过on('error',handleFn)去处理了。

request.post('/api').send(data).on('error',handleFn).end(cb);

HTTP模块SuperAgent(轻量级ajaxAPI)相关推荐

  1. HTTP模块SuperAgent

    superagent它是一个强大并且可读性很好的轻量级ajaxAPI,是一个关于HTTP方面的一个库,而且它可以将链式写法玩的出神入化. var superagent = require('super ...

  2. 好用的 HTTP模块SuperAgent

    SuperAgent 最近在写爬虫,看了下node里面有啥关于ajax的模块,发现superagent这个模块灰常的好用.好东西要和大家分享,话不多说,开始吧- 什么是SuperAgent super ...

  3. 轻量级RTSP服务模块和RTSP推流模块适用场景区别

    好多开发者一直搞不清轻量级RTSP服务SDK和RTSP推流SDK的区别(Github下载地址),以下是相关区别: 1. 轻量级RTSP服务模块:轻量级RTSP服务解决的核心痛点是避免用户或者开发者单独 ...

  4. SuperAgent

    最近在写爬虫,看了下node里面有啥关于ajax的模块,发现superagent这个模块灰常的好用.好东西要和大家分享,话不多说,开始吧- 什么是SuperAgent superagent它是一个强大 ...

  5. 最强通道注意力来啦!金字塔分割注意力模块,即插即用,效果显著,已开源!...

    导读 本文是通道注意力机制的又一重大改进,主要是在通道注意力的基础上,引入多尺度思想,本文主要提出了金字塔分割注意力模块,即PSA module.进一步,基于PSA ,我们将PSA注意力模块替换Res ...

  6. 大幅涨点!孙剑团队提出新激活层ACON和轻量级网络TFNet

    知乎原文: https://zhuanlan.zhihu.com/p/363274457 论文链接: https://arxiv.org/pdf/2009.04759.pdf 代码: https:// ...

  7. CVPR 2021 | 大幅涨点!新型动态激活函数和轻量级网络TFNet

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:旷视研究院 AI博士笔记系列推荐 周志华<机器学习>手推笔记正式开源!可打印版本附pdf下载链接 ...

  8. 能写个简单的oa系统java_基于jsp的轻量级OA系统-JavaEE实现轻量级OA系统 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的轻量级OA系统, 该项目可用各类java课程设计大作业中, 轻量级OA系统的系统架构分为前后台两部分, 最终实现在 ...

  9. nodejs爬虫与php爬虫,利用nodejs爬虫使用superagent和cheerio的方法

    这篇文章主要介绍了nodejs爬虫初试superagent和cheerio的相关知识,非常不错,具有参考借鉴价值,需要的朋友可以参考下 前言 早就听过爬虫,这几天开始学习nodejs,写了个爬虫htt ...

最新文章

  1. RHEL环境下调试Shell脚本时遇到字符串转换整数的问题
  2. sklearn模型预测性能评估(二)
  3. VTK:PolyData之IterateOverLines
  4. 开源跳板机(堡垒机)Jumpserver v2.0.0 部署篇
  5. mysql 如何用一条SQL将一张表里的数据插入到另一张表 3个例子
  6. 为什么java抗并发_用最通熟易懂的话说明,为什么要使用java并发编程
  7. 移动端页面字体在微信被放大,导致排版错乱
  8. kill 和 pgrep 和 pidof 和 awk 和 pkill 和 killall
  9. 详解tomcat的连接数与线程池--转载
  10. 【298天】每日项目总结系列036(2017.11.30)
  11. GIMP教程 1 图片剪裁
  12. Realtek显示芯片方案设计 RTD2270 RTD2281 RTD2513 RTD2525 RTD2556 RTD2785 RTD2795T 2796 VGA DVI HDMI DP转LVDS
  13. Access数据库语句大全
  14. 沟通CTBS金融行业远程接入解决方案
  15. 《软件体系结构》 第四章 软件体系结构描述
  16. linux 下令chmod 755的意思
  17. 2019年全国一二线城市程序员工资大调查
  18. 深度剖析mongos连接池
  19. PMP考纲解读 |【人】任务3—支持团队绩效(二)
  20. 计算机打印错误,打印机错误正在打印处理方法,详细教您电脑打印机错误正在打印处理方法...

热门文章

  1. 数字电路建立时间,保持时间
  2. 什么游戏耳机性价比高?值得入手的蓝牙游戏耳机
  3. matlab 实现电话拨号
  4. 哔哩哔哩弹幕爬取以及BV与AV号之间的转换
  5. 为什么要模1000000007
  6. appinventor连接MySQL_APPInventor网络数据库浏览器(TinyWebDB查询API)
  7. 获取验证码倒计时60秒
  8. python图像滤波
  9. python小球弹弹弹设计初衷_python小球弹弹2
  10. 线性代数 --- 高斯消元法的几何解释