superagent模块api阅读

时间:2022-01-13 06:42:07

题外话,superagent真是一个不错的nodejs模块,推荐使用。

前言

  superagent 是一个流行的nodejs第三方模块,专注于处理服务端/客户端的http请求。

  在nodejs中,我们可以使用内置的http等模块来进行请求的发送、响应处理等操作,不过superagent提供了更加简单、优雅的API,让你在处理请求时更加方便。而且它很轻量,学习曲线平滑,内部其实就是对内置模块的封装。

下面让我们先来看一个简单的例子,大致的了解下request的基本用法,以及它和使用内置模块的区别。

 

var request = require(‘superagent‘); var http = require(‘http‘) var queryString = require(‘queryString‘); // 使用superagent request .post(‘/api/pet‘) .send({ name: ‘Manny‘, species: ‘cat‘ }) .set(‘X-API-Key‘, ‘foobar‘) .set(‘Accept‘, ‘application/json‘) .end(function(err, res){     if (res.ok) {       alert(‘yay got ‘ + JSON.stringify(res.body));     } else {       alert(‘Oh no! error ‘ + res.text);     }   } ); // 使用http var postData = queryString.stringify({name: ‘Manny‘, species: ‘cat‘}); var options = {   path: ‘/api/pet‘,   method: ‘POST‘,   headers: {     ‘X-API-Key‘: ‘foobar‘,     ‘Accept‘: ‘application/json‘   } }; var req = http.request(options, function (res) {   res.on(‘data‘, function (chunk) {     console.log(chunk);   }); }); req.on(‘error‘, function (err) {   console.log(err); }); req.write(postData); req.end();

 

从上面的代码中,我们可以看出,使用superagent发送一个post请求,并设置了相关请求头信息(可以链式操作),相比较使用内置的模块,要简单很多。

  

基本用法

在 var request = require(‘superagent‘) 之后, request 对象上将会有许多方法可供使用。我们可以使用 get 、 post 等方法名来声明一个get或者post请求,然后再通过 end() 方法来发出请求。下面是个例子。

request
.get(‘/search‘)
.end(function (err, res) {

})

这里有一点需要注意,就是只要当调用了 end() 方法之后,这个请求才会发出。在调用 end() 之前的所有动作其实都是对请求的配置。

我们在具体使用时,还可以将请求方法作为字符串参数,比如

request(‘GET‘, ‘/search‘).end(function (err, res) {
});

在nodejs客户端中,还可以提供绝对路径,

request
.get(‘‘)
.end(function (err, res) {

});
其余的http谓语动词也是可以使用,比如 DELETE 、 HEAD 、 POST 、 PUT 等等。使用的时候,,我们只需要变更 request[METHOD] 中的 METHOD 即可。

request
.head(‘/favicon.ico‘)
.end(function (err, res) {

});

不过,针对 DELETE 方法,有一点不同,因为 delete 是一个保留关键字,所以我在使用的时候应该是使用 del() 而不是 delete() 。

request
.del(‘/user/111‘)
.end(function (err, res) {

});

superagent默认的http方法是 GET 。就是说,如果你的请求是 get 请求,那么你可以省略http方法的相关配置。懒人必备。

request(‘/search‘, function(err, res) {
});

 

 


设置请求头

  在之前的例子中,我们看到使用内置的http模块在设置请求头信息时,要求传递给 http.request 一个 options ,这个 options 包含了所有的请求头信息。相对这种方式,superagent提供了一种更佳简单优雅的方式。在superagent中,设置头信息,使用 set() 方法即可,而且它有多种形式,必能满足你的需求。

// 传递key-value键值对,可以一次设置一个头信息
request
.get(‘/search‘)
.set(‘X-API-Key‘, ‘foobar‘)
.set(‘Accept‘, ‘application/json‘)
.end(function (err, res) {

});