切換語言為:簡體

Node.js 發起 HTTP 請求

  • 爱糖宝
  • 2024-10-28
  • 2044
  • 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.