这里使用一个第三方模块,needle,其使用方式比nodejs自带的http模块好用。
package.json依赖:
"dependencies": {
"needle": "^2.5.0"
}
使用方式:
在文件头部引用模块
const needle = require('needle')
GET请求
// 请求参数,json格式
const allParams = { name: 'jim' }
needle.request('GET',url, allParams, {
// 设置header
headers: {}
}, function(error, response) {
// 成功
if (!error && response.statusCode === 200) {
console.log(response.body)
}
});
needle.request()函数完整参数列表如下:
needle.request(method, url, data[, options][, callback])
- method:请求方式,即GET,POST
- url:请求url
- data:请求参数
- options:设置项,用来设置header等信息
- callback:请求回调函数
POST表单提交
// 请求参数,json格式
const allParams = { name: 'jim' }
needle.request('POST',url, allParams, {
// 设置header
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
}, function(error, response) {
// 成功
if (!error && response.statusCode === 200) {
console.log(response.body)
}
});
POST发送JSON
// 请求参数,json格式
const allParams = { name: 'jim' }
needle.request('POST',url, allParams, {
// 指定这一句即可
json: true
}, function(error, response) {
// 成功
if (!error && response.statusCode === 200) {
console.log(response.body)
}
});
在配置项指定json: true
,needle会认为是发送json请求,自动设置header中的Content-Type为application/json
POST 文件上传
// 请求参数,json格式
const allParams = {
name: 'jim',// 普通表单参数
// 上传文件
file1: { file: 'D:/aaa/bbb.txt', content_type: 'application/octet-stream' },
file2: { file: 'D:/aaa/ccc.png', content_type: 'application/octet-stream' }
}
needle.request('POST',url, allParams, {
// 指定这一句即可
multipart: true
}, function(error, response) {
// 成功
if (!error && response.statusCode === 200) {
console.log(response.body)
}
});
在配置项指定multipart: true
,表示需要上传文件。
file1: { file: 'D:/aaa/bbb.txt', content_type: 'application/octet-stream' }
这部分是指定上传的文件,其中file1表示上传文件表单名称,里面的file表示文件路径,后面的content_type可固定这么写。
以上四种请求方式已满足大部分使用场景,更多使用方式参考:needle