$ npm i -g superagent
引入
const superagent = require("superagent");
请求
通过调用superagent对象的then()或end()方法,或使用await关键字,可以向服务器发送一个请求。
同步调用
superagent("GET", url).end((err, res)=>{
//...
});
由于HTTP请求方法默认为GET,因此可省略掉GET
参数。
superagent(url).end((err, res)=>{
//...
});
SuperAgent支持ES6,可使用then()
方法替代end()
方法。
superagent("GET", url).then(success, failure);
superagent.get(url).then(res=>console.log).catch(err=>console.error);
异步调用 async/await
(async _=>{
try{
const res = await superagent.get(url);
console.log(res.status, res.headers, res.body);
}catch(err){
console.error(err.message, err.response);
}
})();
设置GET查询字符串
SuperAgent提供get()
和query()
方法用于GET请求生成URL的查询字符串,query()
支持对象和字符串类型的参数。
superagent.get(url).query(uid:1, page:2}).then(res=>console.log).catch(err=>console.error);
发送POST请求
SuperAgent提供post()
方法并配合send()
方法完成对POST请求的发送,默认POST发送字符串采用的Content-Type
为application/x-www-urlencoded
。比如向服务器发送POST JSON请求。
superagnet.post(url).set(headers).send(data).then(success).catch(error);
superagent.post(url)
.set({"Content-Type":"application/json"})
.send({nickname:"jc", sex:1})
.then(res=>console.log)
.catch(err=>console.error);
SuperAgent发送POST数据的格式是可扩展的,默认支持form
和json
,可使用type()
方法进行设置。需要注意的是form
的别名为form-data
和urlencoded
并向后兼容。
type()
方法可用于速记,接收规范化使用type/subtype
的MIME类型名称,或使用简单的扩展名。
superagent.post(url).type("json").send(json).then(res=>console.log).catch(err=>console.error);
设置请求头字段
SuperAgent中可使用set()
方法设置请求头Header中的键值对,set()
方法支持传入一个对象作为参数。
superagent.get(url).set("Accept", "application/json").then(res=>console.log).catch(err=>console.error);
superagent.get(url).set({"Accept":"application/json"}).then(res=>console.log).catch(err=>console.error);
SuperAgent会自动序列化JSON和格式,可使用serialize()
方法替换为内置序列化。
响应体
SuperAgent请求发送成功后会返回服务器响应,响应数据保存在Response对象中,包括返回文本、返回结构、头字段、状态标志灯。响应体信息位于res.body
属性中。
SuperAgent可以解析常用的响应体,支持application/x-www-form-urlencoded
、application/json
、multipart/form-data
格式。
响应属性 | 描述 |
---|---|
res.text | 被解析的响应数据 |
res.body | 包含解析的数据 |
res.hehader | 响应头对象 |
res.type | 响应类型 |
res.charset | 响应编码格式 |
res.status | 响应状态码 |