胖蔡说技术
随便扯扯

Nodejs中使用http模块实现跨服务接口请求

Nodejs提供http模块,用于创建web服务的模块,创建一个web服务器。同时我们也可以通过使用http模块用于实现客服端请求网络服务。本文主要是介绍如何使用http模块实现客户端,封装使用get、post方法。

1、封装get方法

const http = require('http');

function get(url) {
  return new Promise((resolve, reject) => {
    const req = http.get(url, res => {
      let result = '';
      res.on('data', data => {
        result += data;
      });
      res.on('end', () => {
        console.log('客户端接收到的响应:', result)
        resolve(JSON.parse(result));
      })
    });
    req.setTimeout(60 * 1000, () => {
      console.log('请求超时');
      reject();
    })
    req.on('error', error => {
      reject(error);
    });
  })
}


// 使用
get("http://tool.enjoytoday.cn/api/ip-json/144.100.88.23?lang=zh-CN");

2、创建post请求

const http = require('http');

function post(hostname, path, postData) {
  return new Promise((resolve, reject) => {
    const options = {
      hostname,
      path,
      method: 'POST',
      headers: {
        'Content-Type': 'text/plain'
      },
    };

    const req = http.request(options, res => {
      res.setEncoding('utf8');

      res.on('data', (chunk) => {
        console.log(`BODY: ${chunk}`);
        resolve(chunk);
      });

      res.on('end', () => {
        console.log('No more data in response.');
        reject()
      });

    });

    req.setTimeout(60 * 1000, () => {
      console.log('请求超时');
      reject();
    })
    req.on('error', (e) => {
      reject(e);
    });

    req.write(postData);
    req.end();
  })

}

// 使用
post("data.zz.baidu.com", `/urls?site=${baidu.domain}&token=${baidu.token}`, links.join('\n')).then(res => {
        console.log('提交url成功:', res);
})

除此之外,在nodejs中我们也可以使用axios模块进行网络请求,其用法和浏览器端基本一致,

赞(0) 打赏
转载请附上原文出处链接:胖蔡说技术 » Nodejs中使用http模块实现跨服务接口请求
分享到: 更多 (0)

请小编喝杯咖啡~

支付宝扫一扫打赏

微信扫一扫打赏