nodejs的http request发送get、post请求

1、引入相关模块

使用http request时必须先引入httpquerystring模块,如下:

// 引入相关模块
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( 参数 )来进行携带参数的

hosthostname的关系:
hostname 是 host 的别名。为了支持 url.parse(),如果同时指定了 host 和 hostname,则使用 hostname。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用 `sync-request` 进行 GET 和 POST 请求时,你可以通过提供请求头和参数来发送请求。 首先,我们来看看如何发送 GET 请求并设置请求头和参数的示例代码: ```javascript const request = require('sync-request'); const url = 'https://api.example.com/data'; const headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer token123' }; const params = { param1: 'value1', param2: 'value2' }; const options = { headers: headers, qs: params }; try { const response = request('GET', url, options); console.log(response.getBody('utf8')); } catch (error) { console.error(error); } ``` 在上述代码中,我们定义了 `url`、`headers`、`params` 和 `options` 变量。`headers` 是一个对象,用于设置请求头,`params` 是一个对象,用于设置请求参数。`options` 包含了 `headers` 和 `qs`(查询字符串)字段,用于传递给 `request` 函数。 对于 POST 请求,你可以使用相同的方法来设置请求头和参数,并使用 `sync-request` 发送 POST 请求。下面是一个示例代码: ```javascript const request = require('sync-request'); const url = 'https://api.example.com/data'; const headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer token123' }; const postData = { key1: 'value1', key2: 'value2' }; const options = { headers: headers, json: postData }; try { const response = request('POST', url, options); console.log(response.getBody('utf8')); } catch (error) { console.error(error); } ``` 在这个示例中,我们定义了 `url`、`headers`、`postData` 和 `options` 变量。`postData` 是一个对象,用于设置 POST 请求的数据。`options` 包含了 `headers` 和 `json` 字段,其中 `headers` 用于设置请求头,`json` 用于传递 POST 请求的数据。 以上是使用 `sync-request` 模块发送 GET 和 POST 请求,并设置请求头和参数的示例代码。请注意,由于使用了同步请求,可能会阻塞代码执行,请根据实际情况进行选择和使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值