cp from : https://blog.csdn.net/xiao_chun5316/article/details/48164435

关于superagent,这次写react组件,发送请求都用的superagent,这里分享一下基本使用方法以及遇到的问题。服务器端客户端都可以用,很方便。
它是为nodejs里一个比较方便的客户端请求代理模块。可以处理get,post, put, delete, head等请求,支持绝对路径,支持链式调用。
 
1. 请求基础
request对象,请求方式,参数设置,最后end(callback)结尾。
super agent遇到end才真正发出请求。
 
以一个简单的GET request为例(默认请求方式为get)
request.get(‘/detail')
           .end(function(err,res){     
           // …发起请求后的回调处理
});
请求方法可以通过参数来传递:
request(‘GET’, ‘/detail’).end(callback);
其他请求方式,POST,HEAD,等等都可以用,注意delete由于是保留字,所以调用时应该用 del(‘detail')
 
2. 设置头字段
使用set(’name’, ‘value’)即可,如果想同时设置多个,可以直接传递一个对象进来,例子如下:
request
   .post('/search')

   .set({ 'API-Key': 'foobar', Accept: 'application/json' })

   .end(callback);
可以看到请求头部如下:
 
3. 关于get 请求
.query( )形成query-string,方式的话,有三种
a. 连续写多个.query()
b. 请求放在一个对象里
c. 完全query字符串形式
d. 字符串拼接
例子:
request

  .get('/search')
.query({ query: 'Manny' })
.query({ range: '1..5' })
.query({ order: 'desc' })
  .end(function(res){
  });
or .query({ name: 'Mary’, age: '25', order: 'desc' });
.query('name=Mary&age=25&order=desc’);
.query('name=Mary’)
.query('age=25')
.query(‘order=desc')
4.关于post请求
发送post,设置合适的Content-type,写入一些数据,end
由于json比较通用,作为默认的content-type值。
a. 例子如下:
request.post('/user')
    .set('Content-Type', 'application/json')
   
.send('{"name":"tj","pet":"tobi"}')
b. 也支持form格式,
 设置:
request. post('/user')
     .type('form')
     .send({name: 'mary' })
如果在post情况下,发送字符串的话,将设置Content-typeapplication/x-www-form-urlencoded
例子:
.send('name=tj')
.send('pet=tobi')
请求会这样:
上面两种结果是一样的。
 
5. 可以设置接收类型
关键字:accept
request.get('/user')
   .accept('application/json')
 
6. 支持文件上传
nodejs客户端通过Formidable模块来支持multipart/form-data类型,当解析一个multipart响应时,res.files属性就可以用,可以获取file的路径,内容,等等
 
7.可以用field支持多种类型数据上传
在http请求中,可以看到这些数据是放在request payload部分的,
使用方法:
.field('name', value);
 
8.attach
添加多个附件也比较简单,只需要给附件提供自定义的文件名称,同样的基础名称也要提供.
.attach(name, [path], [filename])
9. piping 管道数据
使用请求流来输送数据,请求一个文件作为输出流,或者发送一个响应流到文件中。
var request = require('superagent')
  , fs = require('fs');

var stream = fs.createReadStream('path/to/my.json');
var req = request.post('/somewhere');
req.type('json');

stream.pipe(req);
 
var request = require('superagent')
  , fs = require('fs');

var stream = fs.createWriteStream('path/to/my.json');
var req = request.get('/some.json');

req.pipe(stream);
 
10.response
如果有err返回,那就有两个参数,一般只有一个res。
res格式:
 
当产生一个4xx或者5xx的http错误响应,res.error提供了一个错误信息的对象。正常情况下,返回的数据在res.body中,可以进一步处理。
 
这次写组件,遇到的主要问题就是,传递的参数格式不正确,以及对res对象属性的错误调用,好好查看http请求,以及返回数据,其实还是之前接触的少,熟练了就不会被卡住了。

[Web 前端] superagent-nodejs处理请求的模块的更多相关文章

  1. [Web 前端] SuperAgent中文使用文档

    cp from : https://blog.csdn.net/gebitan505/article/details/58585846 superagent是nodejs里一个非常方便的客户端请求代理 ...

  2. 如何提升Web前端性能?

    什么是WEB前端呢?就是用户电脑的浏览器所做的一切事情.我们来看看用户访问网站,浏览器都做了哪些事情:输入网址 –> 解析域名 -> 请求页面 -> 解析页面并发送页面中的资源请求 ...

  3. 如何从请求、传输、渲染3个方面提升Web前端性能

    什么是WEB前端呢?就是用户电脑的浏览器所做的一切事情.我们来看看用户访问网站,浏览器都做了哪些事情: 输入网址 –> 解析域名 -> 请求页面 -> 解析页面并发送页面中的资源请求 ...

  4. nodejs基础 用http模块 搭建一个简单的web服务器 响应JSON、html

    前端在开发中,大多会想浏览器获取json数据,下面来用nodejs中的http模块搭建一个返回json数据的服务器 var http = require("http"); var ...

  5. nodejs基础 用http模块 搭建一个简单的web服务器 响应纯文本

    首先说一下,我们平时在浏览器上访问网页,所看到的内容,其实是web服务器传过来的,比如我们访问www.baidu.com.当我们在浏览器地址栏输入之后,浏览器会发送请求到web服务器,然后web服务器 ...

  6. web前端安全 XSS跨站脚本 CSRF跨站请求伪造 SQL注入

    web安全,从前端做起,总结下web前端安全的几种技术: 1,XSS XSS的全称是Cross Site Scripting,意思是跨站脚本,XSS的原理也就是往HTML中注入脚本,HTML指定了脚本 ...

  7. 请求筛选模块被配置为拒绝包含双重转义序列的请求(.net core程序的‘web.config’调整)

    之前项目有一个静态文件特殊字符转义的报错(+变为 %2B),老是显示404  请求筛选模块被配置为拒绝包含双重转义序列的请求  .网上的大多数解决方案都是一下: https://www.cnblogs ...

  8. 淘宝前端工程师:国内WEB前端开发十日谈

    一直想写这篇"十日谈",聊聊我对Web前端开发的体会,顺便解答下周围不少人的困惑和迷惘.我不打算聊太多技术,我想,通过技术的历练,得到的反思应当更重要. 我一直认为自己是" ...

  9. web前端学习路线与书籍推荐

    什么是web前端? 在以前,通俗的讲是网页制作,在现在,哼哼,可以参考这篇文章 http://tieba.baidu.com/p/4817153404 那么如果高效优雅的学习web呢? 注:以下纯属个 ...

随机推荐

  1. Linux 下crontab 详解转

    http://yaksayoo.blog.51cto.com/510938/162062 Linux计划任务工具cron用法详解 linux下大名鼎鼎的计划任务工具crontab的使用介绍baidu. ...

  2. 牛客练习赛16 E - 求值

    题目大意: 链接:https://www.nowcoder.com/acm/contest/84/E 给定n个数字a1, a2, ..., an. 定义f(l, r) = al | al+1| ... ...

  3. H5中标签Canvas实现图像动画

    一:主题部分 1.介绍 canvas可以实现画图功能,所以只要通过js的控制,就可以实现简单的动画效果. 这里主要是两个程序,一个小球来回上下弹跳,一个是吹气球. 2.弹跳程序 <!DOCTYP ...

  4. JMS Java消息服务(Java Message Service)

    JMS 在一些场景下RPC的同步方式可能不太适合业务逻辑的处理,并且这种方式在某些场景下会导致业务的紧耦合. 基于异步交互模型的JMS解决了RPC产生的紧耦合问题,它提供了一个可以通过网络访问的抽象消 ...

  5. 循序渐进学.Net Core Web Api开发系列【12】:缓存

    系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 本篇介绍如 ...

  6. 循序渐进学.Net Core Web Api开发系列【11】:依赖注入

    系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 本篇介绍如 ...

  7. 100BASE-TX / 100BASE-T4/100BASE-FX

    IEEE标准共有以下几种:10BASE-5:粗缆.最大传输距离500米,使用AUI连接器连接或使用收发器电缆和收发器(MAU)进行连接.10BASE-2:细缆.实际传输距离为185米,使用BNC连接器 ...

  8. OSI 7层 TCP/IP 4层

    在网络层有{ IP协议:IP协议是用于将多个包交换网络连接起来的,它在源地址和目的地址之间传送一种称之为数据包的东西,它还提供对数据大小的重新组装功能,以适应不同网络对包大小的要求. ICMP协议:I ...

  9. 网络与多线程---OC中多线程使用方法(一)

    小编在此之前,通过一个小例子,简单的形容了一下进程与线程之间的关系,现在网络编程中的多线程说一下!!! *进程的基本概念 每一个进程都是一个应用程序,都有自己独立的内存空间,一般来说一个应用程序存在一 ...

  10. 没用过的函数 GetHomePath - 获取用户程序数据目录

    uses System.IOUtils; procedure TForm1.FormCreate(Sender: TObject); var S: string; begin { 三种方法结果一致: ...