在 Node.js 中发出 HTTP 请求的 5 种方法
在 Node.js 中,可以使用内置的 http
和 https
模块,或者第三方模块如 axios
或 request
来发出 HTTP 请求。以下是使用这些方法的示例代码:
- 使用 Node.js 的
http
或https
模块:
const http = require('http');
const https = require('https');
// 使用 http 模块发出 GET 请求
http.get('http://your-url.com', (resp) => {
let data = '';
// 接收数据片段
resp.on('data', (chunk) => {
data += chunk;
});
// 整个响应已被接收
resp.on('end', () => {
console.log(JSON.parse(data));
});
}).on("error", (err) => {
console.log("Error: " + err.message);
});
// 使用 https 模块发出 POST 请求
const postData = JSON.stringify({
key: 'value'
});
const options = {
hostname: 'your-url.com',
port: 443,
path: '/path',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': postData.length
}
};
const req = https.request(options, (res) => {
console.log(`状态码: ${res.statusCode}`);
res.on('data', (d) => {
process.stdout.write(d);
});
});
req.on('error', (e) => {
console.error(`请求遇到问题: ${e.message}`);
});
req.write(postData);
req.end();
- 使用
axios
第三方库发出请求:
首先安装 axios
:
npm install axios
然后在代码中使用:
const axios = require('axios');
// 发出 GET 请求
axios.get('http://your-url.com')
.then((response) => {
console.log(response.data);
})
.catch((error) => {
console.log(error);
});
// 发出 POST 请求
axios.post('http://your-url.com', {
firstName: 'Fred',
lastName: 'Flintstone'
})
.then((response) => {
console.log(response.data);
})
.catch((error) => {
console.log(error);
});
- 使用
request
第三方库发出请求:
首先安装 request
:
npm install request
然后在代码中使用:
const request = require('request');
// 发出 GET 请求
request('http://your-url.com', function (error, response, body) {
console.log('body:', body);
});
// 发出 POST 请求
request.post('http://your-url.com', {form:{key:'value'}}, function(error, response, body) {
console.log('body:', body);
});
- 使用
node-fetch
第三方库发出请求:
首先安装 node-fetch
:
npm install node-fetch
然后在代码中使用:
const fetch = require('node-fetch');
// 发出 GET 请求
fetch('http://your-url.com')
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.log('请求错误:', err));
// 发出 POST 请求
fetch('http://your-url.com', {
method: 'POST
评论已关闭