在 Node.js 中,可以使用多种方式来发起 HTTP 请求。以下是一些使用内置的 http 模块以及流行的第三方库 axios 发起 HTTP 请求的例子。
http 模块发起 GET 请求Node.js 的 http 模块允许你发起 GET 请求。以下是一个简单的例子:
JavaScriptconst http = require('http');
const options = {
hostname: 'www.baidu.com',
port: 80,
path: '/',
method: 'GET'
};
const req = http.request(options, (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();

http 模块发起 POST 请求当需要发送数据到服务器时,你可能需要使用 POST 请求。以下是如何使用 http 模块发起 POST 请求的例子:
JavaScriptconst https = require("https"); // 使用https模块
const data = JSON.stringify({
id: 10,
name: "rick",
city: "bj",
});
const options = {
hostname: "localhost", // 不包含协议部分
port: 7144, // 使用HTTPS的端口
path: "/api/User/Add",
method: "POST",
headers: {
"Content-Type": "application/json",
"Content-Length": Buffer.byteLength(data), // 使用Buffer.byteLength计算长度
},
// 可选:如果使用自签名证书,可以添加以下选项忽略证书验证(不推荐在生产环境中)
rejectUnauthorized: false,
};
const req = https.request(options, (res) => {
console.log(`状态码: ${res.statusCode}`);
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(data);
req.end();

axios 库发起 GET 请求axios 是一个基于 Promise 的 HTTP 客户端,适用于 node.js 和浏览器。它是执行 HTTP 请求的流行选择。以下是如何使用 axios 发起 GET 请求的例子:
JavaScriptconst axios = require('axios');
// 创建一个忽略自签名证书验证的 Axios 实例
const instance = axios.create({
baseURL: 'https://localhost:7144',
httpsAgent: new (require('https').Agent)({ rejectUnauthorized: false })
});
instance.get('/api/User/Detail?id=1')
.then((response) => {
console.log(`状态码: ${response.status}`);
console.log(`响应主体: ${response.data}`);
})
.catch((error) => {
console.error(`请求遇到问题: ${error.message}`);
});
注意:需要单独安装axios
textnpm install axios --save

axios 库发起 POST 请求使用 axios 发起 POST 请求同样简单。以下是一个例子:
JavaScriptconst axios = require("axios");
const todo = {
id: 20,
name: "rick",
city: "sh",
};
// 创建一个忽略自签名证书验证的 Axios 实例
const instance = axios.create({
baseURL: 'https://localhost:7144',
httpsAgent: new (require('https').Agent)({ rejectUnauthorized: false })
});
instance
.post("/api/User/Save", todo)
.then((response) => {
console.log(`状态码: ${response.status}`);
console.log(`响应主体: ${response.data}`);
})
.catch((error) => {
console.error(`请求遇到问题: ${error.message}`);
});

在上述例子中,我们使用 axios 库发送了一个 JSON 对象,并在响应中打印状态码和响应数据。
在 Node.js 中,你可以使用内置的 http 模块或者第三方库如 axios 来发起 HTTP 请求。内置模块提供了更多的控制和灵活性,而 axios 等库提供了简洁的 API 和 Promise 支持,使得异步 HTTP 请求变得更加容易。选择哪种方法取决于你的具体需求和个人喜好。
本文作者:技术老小子
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!