1、发送GET请求

如果你有自定义的需求,可以访问官网:

HTTP | Node.js v12.22.7 Documentation

let http = require('http');
// 格式化返回的参数 对json格式的数据进行格式化
function formatResData(data, headers) {let type = headers['content-type'];if (!type || type && type.indexOf('application/json') !== -1) {if (typeof data === 'string') {try {data = JSON.parse(data);} catch (e) { /* Ignore */ }}}return data;
}
// 封装get请求
function get(url, headers = {}) {return new Promise((resolve, reject) => {const options = {headers: headers};const req = http.get(url, options, res => {let had = false;res.setEncoding('utf8');// 监听返回的数据res.on('data', (chunk) => {had = true;// 数据格式化res.data = formatResData(chunk, res.headers);resolve(res);});// 监听接口请求完成, 除非error,最终都会执行end;res.on('end', () => {if (had) return;resolve(res);});});req.on('error', e => {reject(e);});}).catch(e => {console.error('Request error: ' + url + ', Method:' + 'GET' + ',Error message:', e);throw new Error(e ? e : 'Request error');})
}
// 调用示例
let headers = {Cookie: 'xxxxxx'
};
get('http:xxxxxx', headers).then(res => {// res.statusCode为接口返回的状态码, res.data为接口返回的数据console.log(res.statusCode, res.data);
});

2、发送POST请求

如果你有自定义的需求,可以访问官网:

HTTP | Node.js v12.22.7 Documentation

let http = require('http');
// 封装POST请求
function post(url, data, headers = {}) {return new Promise(resolve => {const options = {method: 'POST',headers: headers};const req = http.request(url, options, res => {let had = false;res.setEncoding('utf8');res.on('data', (chunk) => {had = true;// 当接口返回的是json格式数据时可以使用JSON.parseres.data = formatResData(chunk, res.headers);resolve(res);});// 监听接口请求完成, 除非error,最终都会执行end;res.on('end', () => {if (had) return;resolve(res);});});req.on('error', e => {reject(e);});// 写入请求的数据data && req.write(data);req.end();}).catch(e => {console.error('Request error: ' + url + ', Method:' + 'GET' + ',Error message:', e);throw new Error(e ? e : 'Request error');})
}
// 调用示例
let data = {name: 'xxx'
}
// 发送form表单格式数据
data = qs.stringify(data);
// 设置请求头(Content-Type)为form表单格式
let headers = {'Content-Type': 'application/x-www-form-urlencoded','Cookie': 'xxxxx'
};
post('http:xxx', data, headers).then(res => {// res.statusCode为接口返回的状态码, res.data为接口返回的数据console.log(res.statusCode, res.data);
})

3、node开启的服务支持跨域

如果你需要在请求头接受cookie和Token进行权限验证,'Access-Control-Allow-Headers'里面需要添加Set-Cookie和接受的请求头名称,例如下面的例子中Authorization为接受的请求头名称。

var app = express();
// 允许跨域
app.use((req, res, next) => {res.set({'Access-Control-Allow-Credentials': true, //允许后端发送cookie'Access-Control-Allow-Origin': req.headers.origin || '*', //任意域名都可以访问,或者基于我请求头里面的域'Access-Control-Allow-Headers': 'X-Requested-With,Content-Type,Set-Cookie,Authorization', //设置请求头格式和类型'Access-Control-Allow-Methods': 'PUT,POST,GET,DELETE,OPTIONS',//允许支持的请求方式'Content-Type': 'application/json; charset=utf-8'//默认与允许的文本格式json和编码格式})req.method === 'OPTIONS' ? res.status(200).end() : next()
})

Node 发送 HTTP请求相关推荐

  1. Node.js发送HTTP请求

    在Node.js中发送HTTP请求,用的比较多的是request组件,该组件的功能非常强大,但是该组件需要通过回调函数的方式获取操作的结果. 由于现在Node.js对ES6已经支持的比较好了,我们更希 ...

  2. 前端学axios还是ajax,【Web前端问题】axios发送ajax请求问题?

    在程序里借助axios库发送ajax请求,但是失败了,返回这个 然而在同一个位置换成jquery的代码却能成功,代码如下,不知axios哪里写的不对??谢谢~ //axios axios.post(& ...

  3. Ionic+Angular+Express实现前后端交互使用HttpClient发送get请求数据并加载显示(附代码下载)

    场景 Ionic介绍以及搭建环境.新建和运行项目: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/106308166 在上面搭建起 ...

  4. promise的应用和在VUE中使用axios发送AJAX请求服务器

    promise 用promise对函数封装: 原来的代码: <!DOCTYPE html> <html> <head><title>vue demo&l ...

  5. java在线支付---06,07,08_在线支付_编写将数据提交给易宝支付的JSP页面,集成和测试向易宝发送支付请求,实现浏览器自动向易宝发送支付请求

    06_在线支付_编写将数据提交给易宝支付的JSP页面 -------------------------------------------------------------- 1./payment ...

  6. Java发送Http请求,解析html返回

    今天是2008年7月7日星期一,下午一直在学校做个人开始页面.因为离不开google的翻译,所以想把google的翻译整合到我的开始页面中来,于是乎就遇到了一个问题,怎样使用java程序发送http请 ...

  7. Node中POST请求的正确处理方式

    Node的 http 模块只对HTTP报文的头部进行了解析,然后触发 request 事件.如果请求中还带有内容部分(如 POST 请求,它具有报头和内容),内容部分需要用户自行接收和解析. 通过报头 ...

  8. axios发送网络请求

    网络模块封装 选择什么网络模块 传统的Ajax 缺点:配置和调用方式等非常混乱 jQuery-Ajax 缺点:在Vue整个开发中都是不需要使用jQuery的 axios axios 功能特点: 在浏览 ...

  9. `SpringBoot`+`axios`结合发送`ajax`请求

    SpringBoot+axios结合发送ajax 1.搭建环境 1.1 创建表并添加数据 DROP TABLE t_posts;CREATE TABLE IF NOT EXISTS t_posts(p ...

最新文章

  1. 参考例子,学习FuncT, TResult委托
  2. 若川知乎高赞:有哪些必看的 JS 库?
  3. 强大的CSS3动画库animate.css
  4. web前端复习系列[1]——标签
  5. C++设计模式-中介者模式
  6. Two-Stream RNN/CNN for Action Recognition in 3D Videos-阅读笔记
  7. python训练模型函数参数_keras读取训练好的模型参数并把参数赋值给其它模型详解...
  8. MySQL数据库分区的概念与2大好处(1)
  9. grunt入门讲解4:如何创建task(任务)
  10. 1.2 Illustrator多文档的几种排列方式
  11. 扫盲:Java 后端开发常用的 10 种第三方服务
  12. 大学计算机教程王梦倩,【经验共享】中国矿业大学资源学院辅导员王梦倩
  13. 最强内存稳定性测试软件,内存稳定性测试软件TM5
  14. Android绘图Porter-Duff规则
  15. Linux ALSA音频驱动一:音频系统概述
  16. Rabbitmq消息中心_消息中心总体方案
  17. c++ 实现线索二叉树
  18. 怪物猎人世界取得服务器信息,steam怪物猎人世界无法连接更新服务器 | 手游网游页游攻略大全...
  19. MySQL-5.6版本GTID的主从复制
  20. 虚拟机安装的系统界面很大的解决办法

热门文章

  1. 夜光 : 多 AGV 小车的路径规划技术的研究 (三)
  2. tff字体包更改等宽(编程强推)
  3. polit Number
  4. 在 Windows 上安装 SVN Subversion 服务端
  5. 【侯捷】C++STL标准库与泛型编程(第一讲)
  6. 安卓USB模块源码分析(一)- 准备
  7. python中数据可视化柱状图_python数据可视化,pyecharts柱状图绘制
  8. citespace安装好后将CNKI来源的题录进行格式转换无反应的解决方法
  9. 力扣343.整数拆分 数学直觉法
  10. 树莓派4B安装QT和OpenCV