HTTP模块SuperAgent(轻量级ajaxAPI)
什么是SuperAgent ?
superagent
它是一个强大并且可读性很好的轻量级ajax
API,是一个关于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)相关推荐
- HTTP模块SuperAgent
superagent它是一个强大并且可读性很好的轻量级ajaxAPI,是一个关于HTTP方面的一个库,而且它可以将链式写法玩的出神入化. var superagent = require('super ...
- 好用的 HTTP模块SuperAgent
SuperAgent 最近在写爬虫,看了下node里面有啥关于ajax的模块,发现superagent这个模块灰常的好用.好东西要和大家分享,话不多说,开始吧- 什么是SuperAgent super ...
- 轻量级RTSP服务模块和RTSP推流模块适用场景区别
好多开发者一直搞不清轻量级RTSP服务SDK和RTSP推流SDK的区别(Github下载地址),以下是相关区别: 1. 轻量级RTSP服务模块:轻量级RTSP服务解决的核心痛点是避免用户或者开发者单独 ...
- SuperAgent
最近在写爬虫,看了下node里面有啥关于ajax的模块,发现superagent这个模块灰常的好用.好东西要和大家分享,话不多说,开始吧- 什么是SuperAgent superagent它是一个强大 ...
- 最强通道注意力来啦!金字塔分割注意力模块,即插即用,效果显著,已开源!...
导读 本文是通道注意力机制的又一重大改进,主要是在通道注意力的基础上,引入多尺度思想,本文主要提出了金字塔分割注意力模块,即PSA module.进一步,基于PSA ,我们将PSA注意力模块替换Res ...
- 大幅涨点!孙剑团队提出新激活层ACON和轻量级网络TFNet
知乎原文: https://zhuanlan.zhihu.com/p/363274457 论文链接: https://arxiv.org/pdf/2009.04759.pdf 代码: https:// ...
- CVPR 2021 | 大幅涨点!新型动态激活函数和轻量级网络TFNet
点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:旷视研究院 AI博士笔记系列推荐 周志华<机器学习>手推笔记正式开源!可打印版本附pdf下载链接 ...
- 能写个简单的oa系统java_基于jsp的轻量级OA系统-JavaEE实现轻量级OA系统 - java项目源码...
基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的轻量级OA系统, 该项目可用各类java课程设计大作业中, 轻量级OA系统的系统架构分为前后台两部分, 最终实现在 ...
- nodejs爬虫与php爬虫,利用nodejs爬虫使用superagent和cheerio的方法
这篇文章主要介绍了nodejs爬虫初试superagent和cheerio的相关知识,非常不错,具有参考借鉴价值,需要的朋友可以参考下 前言 早就听过爬虫,这几天开始学习nodejs,写了个爬虫htt ...
最新文章
- RHEL环境下调试Shell脚本时遇到字符串转换整数的问题
- sklearn模型预测性能评估(二)
- VTK:PolyData之IterateOverLines
- 开源跳板机(堡垒机)Jumpserver v2.0.0 部署篇
- mysql 如何用一条SQL将一张表里的数据插入到另一张表 3个例子
- 为什么java抗并发_用最通熟易懂的话说明,为什么要使用java并发编程
- 移动端页面字体在微信被放大,导致排版错乱
- kill 和 pgrep 和 pidof 和 awk 和 pkill 和 killall
- 详解tomcat的连接数与线程池--转载
- 【298天】每日项目总结系列036(2017.11.30)
- GIMP教程 1 图片剪裁
- Realtek显示芯片方案设计 RTD2270 RTD2281 RTD2513 RTD2525 RTD2556 RTD2785 RTD2795T 2796 VGA DVI HDMI DP转LVDS
- Access数据库语句大全
- 沟通CTBS金融行业远程接入解决方案
- 《软件体系结构》 第四章 软件体系结构描述
- linux 下令chmod 755的意思
- 2019年全国一二线城市程序员工资大调查
- 深度剖析mongos连接池
- PMP考纲解读 |【人】任务3—支持团队绩效(二)
- 计算机打印错误,打印机错误正在打印处理方法,详细教您电脑打印机错误正在打印处理方法...