NodeJS后端http请求之request包


request是服务端发起请求的工具包

安装

1
npm i request

基本使用

有如下几种使用方式

1
2
3
request(url, {option}, callback) // 默认使用get,因此等同于request.get
request({option}, callback)
request.get(url, {option}, callback)

除去第一种,后两种的区别无非就是:前者把url和method(请求地址和请求方式)在option中配置,后者无需配置我更喜欢后者,简洁明了

option配置项和回调函数参数讲解参考下文

option配置项

option有如下几种常用配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
timeout: 5000, // 超时时间
method
:
'GET', // 请求方式 GET POST
json
:
true, // 是否为json数据格式,即返回的数据会自动JSON.parse()
headers
:
{
'content-type'
:
'application/json',
}
, // 请求头
qs: {
name: kanade
}
, // url请求参数,即跟在url的?后面的参数
form: {
type: wife
} // post请求参数体
}

回调函数callback

callback存在三个参数:error, response, body

  • error:当请求出错时,error会存在值,否则为null
  • response:返回的各种参数,其中statusCode属性为200时为请求成功,可以结合error判断是否请求成功并处理
  • body:请求到的数据

请求示例

直接默认get请求调用

我不喜欢用

1
2
3
4
5
6
const request = require('request');
request('请求的url', function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body) // 请求成功的处理逻辑
}
})
配置项方式请求

get请求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const request = require('request');
request({
timeout: 5000,
method: 'GET',
url: '请求的url', //url
json: true,
qs: {
xx: "xxx" // 请求参数
}
}, function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body) // 请求成功的处理逻辑
}
})

post请求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const request = require('request');
request({
timeout: 5000,
method: 'POST',
url: '请求的url', //url
json: true,
form: {
xx: "xxx" // 请求参数
}
}, function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body) // 请求成功的处理逻辑
}
})
调用方式请求

get请求

1
2
3
4
5
6
7
8
9
10
11
12
const request = require('request');
request.get('请求的url', {
timeout: 5000,
json: true,
qs: {
xx: "xxx" // 请求参数
}
}, function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body) // 请求成功的处理逻辑
}
})

post请求

1
2
3
4
5
6
7
8
9
10
11
12
const request = require('request');
request.post('请求的url', {
timeout: 5000,
json: true,
form: {
xx: "xxx" // 请求参数
}
}, function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body) // 请求成功的处理逻辑
}
})