You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Angular中HttpClient的请求代码转换为Node.js实现

Node.js 环境下公网IP获取功能实现

Angular 中的 HttpClient 是框架封装的专属HTTP客户端,Node.js环境下我们可以用原生模块或者第三方HTTP库来实现同等功能,以下是两种可直接运行的TypeScript实现:


实现1:使用Node.js原生https模块(无第三方依赖)

无需安装额外运行时依赖,TS环境下仅需安装node类型定义:
npm i @types/node -D

import https from 'https';

// 对应原代码中的全局存储变量
let userIpAddress: string;

function getDeviceIP(): Promise<void> {
  return new Promise((resolve, reject) => {
    // 这里改用https协议请求,安全性更高
    https.get('https://api.ipify.org/?format=json', (res) => {
      let rawData = '';
      // 拼接响应数据流
      res.on('data', (chunk) => rawData += chunk);
      res.on('end', () => {
        try {
          const parsedRes = JSON.parse(rawData) as { ip: string };
          userIpAddress = parsedRes.ip;
          // 拿到IP后的后续逻辑可在此处执行
          resolve();
        } catch (parseErr) {
          reject(parseErr);
        }
      });
    }).on('error', (reqErr) => {
      console.error('请求IP接口失败:', reqErr.message);
      reject(reqErr);
    });
  });
}

// 调用示例
getDeviceIP();

实现2:使用axios库(写法更简洁,接近Angular使用习惯)

需要先安装axios及对应类型定义:
npm i axios && npm i @types/axios -D

import axios from 'axios';

let userIpAddress: string;

// 用async/await语法,逻辑更清晰
async function getDeviceIP() {
  try {
    const res = await axios.get<{ ip: string }>('https://api.ipify.org/?format=json');
    userIpAddress = res.data.ip;
    // 拿到IP后的后续逻辑可直接在此处编写
  } catch (err) {
    console.error('请求IP接口失败:', (err as Error).message);
  }
}

// 调用示例
getDeviceIP();

补充说明

  • 如果你是在TS类中使用上述方法,直接给方法加private修饰符即可,和原Angular代码的写法一致
  • 如果你的Node.js项目用的是CommonJS规范,把代码中的import导入语句替换为require即可正常运行
  • 原代码中的RxJS subscribe 订阅写法如果要完全保留,可以自行安装rxjs包适配,这里用了Node.js生态更通用的Promise/async await语法

内容的提问来源于stack exchange,提问作者Kukula Mula

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 23:48:04