1、引入相关模块
使用http request
时必须先引入http
和querystring
模块,如下:
// 引入相关模块
var http = require('http')
var querystring = require('querystring')
2、使用
get请求
// 需要提交的数据
var data = {
a: 111,
time: Date.now()
}
var dataString = querystring.stringify(data) // 转换为字符串格式
var option = {
hostname: '127.0.0.1', // 要访问的服务器的ip地址
port: 3000, // 要访问的服务器的端口
path: '/xx/xx?arg=' + dataString, // 请求的接口和传递的参数
method: 'GET' // 请求方式
}
var rep = http.request(option, function(res){
console.log('状态码:' + res.statusCode)
console.log('响应头:' + JSON.stringify(res.headers))
res.setEncoding('utf8');
res.on('data', (chunk) => {
console.log(`响应主体: ${chunk}`);
});
res.on('end', () => {
console.log('响应中已无数据');
});
})
req.on('error', (e) => {
console.error(`请求遇到问题: ${e.message}`);
});
req.end(); // 必须始终调用 req.end() 来表示请求的结束
post请求
var data = {
a: 111,
time: Date.now()
}
var dataString = querystring.stringify(data) // 转换为字符串格式
var option = {
hostname: '127.0.0.1', // 要访问的服务器的ip地址
port: 3000, // 要访问的服务器的端口
path: '/xx/xx', // 请求的接口
method: 'POST', // 请求方式
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}
var rep = http.request(option, function(res){
console.log('状态码:' + res.statusCode)
console.log('响应头:' + JSON.stringify(res.headers))
res.setEncoding('utf8');
res.on('data', (chunk) => {
console.log(`响应主体: ${chunk}`);
});
res.on('end', () => {
console.log('响应中已无数据');
});
})
req.on('error', (e) => {
console.error(`请求遇到问题: ${e.message}`);
});
req.write(dataString) // post请求携带的参数(将数据写入请求主体)
req.end(); // 必须始终调用 req.end() 来表示请求的结束
注:
post请求时,除了把method改为‘POST’外,还需要加上headers(请求头)
post请求是通过req.writ( 参数 )
来进行携带参数的
host
和hostname
的关系:
hostname 是 host 的别名。为了支持 url.parse(),如果同时指定了 host 和 hostname,则使用 hostname。