切换语言为:繁体

Node.js 发起 HTTP 请求

  • 爱糖宝
  • 2024-10-28
  • 2043
  • 0
  • 0

在 Node.js 中,可以使用多种方式来发起 HTTP 请求。以下是一些使用内置的 http 模块以及流行的第三方库 axios 发起 HTTP 请求的例子。

使用 http 模块发起 GET 请求

Node.js 的 http 模块允许你发起 GET 请求。以下是一个简单的例子:

const 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();

Node.js 发起 HTTP 请求

使用 http 模块发起 POST 请求

当需要发送数据到服务器时,你可能需要使用 POST 请求。以下是如何使用 http 模块发起 POST 请求的例子:

const 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), // 使用BufferbyteLength计算长度  
	},
	. // 可选:如果使用自签名证书,可以添加以下选项忽略证书验证(不推荐在生产环境中)  
	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();

Node.js 发起 HTTP 请求

使用 axios 库发起 GET 请求

axios 是一个基于 Promise 的 HTTP 客户端,适用于 node.js 和浏览器。它是执行 HTTP 请求的流行选择。以下是如何使用 axios 发起 GET 请求的例子:

const 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

npm install axios --save

Node.js 发起 HTTP 请求

使用 axios 库发起 POST 请求

使用 axios 发起 POST 请求同样简单。以下是一个例子:

const 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}`);
	});

Node.js 发起 HTTP 请求

在上述例子中,我们使用 axios 库发送了一个 JSON 对象,并在响应中打印状态码和响应数据。

结论

在 Node.js 中,你可以使用内置的 http 模块或者第三方库如 axios 来发起 HTTP 请求。内置模块提供了更多的控制和灵活性,而 axios 等库提供了简洁的 API 和 Promise 支持,使得异步 HTTP 请求变得更加容易。选择哪种方法取决于你的具体需求和个人喜好。

0条评论

您的电子邮件等信息不会被公开,以下所有项均必填

OK! You can skip this field.