你提到的 “Node 扩展” 可能有几种不同场景,下面我按常见情况分别说明 如何在 Node 扩展中调用 API。如果你指的是其中某一种(比如 VS Code 插件、Electron、或 Node 后端扩展),可以告诉我,我可以给更具体的示例。
如果你是指 Node.js 项目中的扩展模块(如中间件、插件)调用外部 API,通常使用 axios 或 node-fetch。
// extension.js
const axios = require('axios');
async function callApi() {
try {
const res = await axios.get('https://api.example.com/data', {
params: {
id: 1
},
headers: {
Authorization: 'Bearer token'
}
});
return res.data;
} catch (err) {
console.error('API 调用失败', err);
}
}
module.exports = { callApi };
调用:
const ext = require('./extension');
ext.callApi().then(data => console.log(data));
如果你指的是 VS Code Extension(Node 环境)调用 API:
VS Code 扩展运行在 Node.js 中,可以直接使用 axios 或 fetch(新版本 Node 支持)。
import * as vscode from 'vscode';
import axios from 'axios';
export function activate(context: vscode.ExtensionContext) {
let disposable = vscode.commands.registerCommand('ext.callApi', async () => {
const res = await axios.get('https://api.example.com/user');
vscode.window.showInformationMessage(JSON.stringify(res.data));
});
context.subscriptions.push(disposable);
}
如果是 Electron:
IPC 让主进程调用 API(更安全)ipcMain.handle('call-api', async () => {
const res = await axios.get('https://api.example.com/data');
return res.data;
});
const data = await window.electronAPI.callApi();
如果是 插件调用内部服务:
axios.post('http://localhost:3000/api', {
key: 'value'
});
try/catch 防止崩溃timeoutasync/await 避免回调地狱如果你能补充说明:
我可以直接给你一套可运行的完整代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。