基于Node 的http转发demo,项目中请使用express+http-proxy-middleware
var http = require("http");
var data = '';
function getData() {
const options = {
host: 'www.baidu.com',
port: 80,
path: '/index.html',
method: 'GET',
headers: {
'Content-Type':'text/html',
}
};
const req = http.request(options, (res) => {
console.log(`状态码: ${res.statusCode}`);
console.log(`响应头: ${JSON.stringify(res.headers)}`);
res.setEncoding('utf8');
res.on('data', (chunk) => {
data += chunk;
//console.log(`响应主体: ${chunk}`);
});
res.on('end', () => {
// console.log(data);
console.log('响应中已无数据');
// return data
});
});
req.end();
}
//调用
// getData();
// setTimeout(()=>{
// console.log(data)
// },300)
http.createServer((req, res) => {
getData();
// Content Type: text/html
res.writeHead(200, {
'Content-Type': 'text/html',
});
// 响应文件内容
setTimeout(() => {
res.write(data.toString());
res.end();
}, 300)
}).listen(80, () => {
console.log('服务器开启成功')
})
项目中请使用:express+http-proxy-middleware
为什么要使用node代理转发?
我们要实现前后端分离,然后前端不在自己的电脑上安装tomcat,这时候,我们通过用node搭建服务器,然后转发我们的请求。例如:自己本地是localhost:3000,我们需要访问http://www.example.com(当然,开发过程中,这个应该是你们后台的tomcat的地址), 来做ajax的数据交互。
创建项目
|
1
|
npm init |
安装模块
|
1
|
npm install express connect-timeout http-proxy-middleware --save-dev |
创建js文件
const express = require('express');
const timeout = require('connect-timeout');
const proxy = require('http-proxy-middleware');
const app = express();
// 超时时间
const TIME_OUT = 30 * 1e3;
// 设置端口
app.set('port', '80');
// 设置超时 返回超时响应
app.use(timeout(TIME_OUT));
app.use((req, res, next) => {
if (!req.timedout) next();
});
proxyOption = {
target: 'http://localhost:8080',
pathRewrite: {
'^/api/' : '/' // 重写请求,api/解析为/
},
changeOrigoin:true
};
// 静态资源路径
app.use('/', express.static('src/page'));
// 反向代理
app.use('/api/*', proxy(proxyOption));
// 监听端口
app.listen(app.get('port'), () => {
console.log(`server running @${app.get('port')}`);
});
基于Node 的http转发demo,项目中请使用express+http-proxy-middleware的更多相关文章
- 在基于MVC的Web项目中使用Web API和直接连接两种方式混合式接入
在我之前介绍的混合式开发框架中,其界面是基于Winform的实现方式,后台使用Web API.WCF服务以及直接连接数据库的几种方式混合式接入,在Web项目中我们也可以采用这种方式实现混合式的接入方式 ...
- Vue3 Vite3 多环境配置 - 基于 vite 创建 vue3 全家桶项目(续篇)
在项目或产品的迭代过程中,通常会有多套环境,常见的有: dev:开发环境 sit:集成测试环境 uat:用户接收测试环境 pre:预生产环境 prod:生产环境 环境之间配置可能存在差异,如接口地址. ...
- 百度ai 基于node 语音识别 音频文件类型转换
百度ai 基于node 语音识别 音频文件类型转换 项目简介 源代码移步:https://github.com/xuess/ai-baidu-node 本项目主要功能为,本地音频语音识别和文件类型转换 ...
- 基于node的前端项目代码包发布至nexus
目录 目录... 3 1. 前言... 1 2. 配置... 1 2.1. 配置angular.json文件... 1 2.2. 配置package.json文件... 1 2.3. 复制git地址. ...
- 基于node.js构建微服务中的mock服务
缘起 由于现在微服务越来越火了,越来越多的微服务融入到了日常开发当中.在开发微服务的时候,经常会遇到一个问题由于依赖于其他服务,导致你的进度受到阻碍.使你不得不先mock出你期望调用依赖服务的输出,来 ...
- 一个基于node 的小demo
首先我们新建一个文件夹 demo-test-node-1 目录目录如下 -- blog_recents.js --template.html --titles.jspn 首先我们新建一个 templ ...
- TypeScript在node项目中的实践
TypeScript在node项目中的实践 TypeScript可以理解为是JavaScript的一个超集,也就是说涵盖了所有JavaScript的功能,并在之上有着自己独特的语法.最近的一个新项目开 ...
- 基于 React 封装的高德地图组件,帮助你轻松的接入地图到 React 项目中。
react-amap 这是一个基于 React 封装的高德地图组件,帮助你轻松的接入地图到 React 项目中. 文档实例预览: Github Web | Gitee Web 特性 ️ 自动加载高德地 ...
- 基于node实现一个简单的脚手架工具(node控制台交互项目)
实现控制台输入输出 实现文件读写操作 全原生实现一个简单的脚手架工具 实现vue-cli2源码 一.实现控制台输入输出 关于控制台的输入输出依然是基于node进程管理对象process,在proces ...
随机推荐
- sql server数据库查询取出重复数据记录
问题:博主在2011年6月,广东技术师范大学大四的时候,从学校计算机科学学院网站看到招聘信息并到广东中原地产IT部面试,很清楚记得当时的面试题目:怎么从数据库里面查询重复记录. 解决方案:在sql s ...
- ResultSet RS_resultxtgg=connDbBean.executeQuery(sqlxtgg);
<%String sqlxtgg="select * from dx where leibie='系统公告'"; ResultSet RS_resultxtgg=connDb ...
- yml和properties的加载顺序和区别
正常的情况是先加载yml,接下来加载properties文件.如果相同的配置存在于两个文件中.最后会使用properties中的配置.最后读取的优先集最高. 两个配置文件中的端口号不一样会读取prop ...
- 【RTOS】基于V7开发板的最新版FreeRTOS V10.2.0程序模板,含MDK和IAR,支持串口打印任务执行情况
模板下载: 链接:https://pan.baidu.com/s/1N32Hx7cTbDoRinuzTUB3zw 提取码:6aox 1.MDK使用MDK5.26及其以上版本. 2.IAR使用IAR ...
- 分享Java程序员50多道热门的多线程和并发面试题(答案解析)
下面是Java程序员相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器 ...
- sprintf函数 (字符格式化函数)
sprintf函数 字符串格式化命令,主要功能是把格式化的数据写入某个字符串中. sprintf函数原型在<studio.h>中. sprintf( [指向输入格式化后的字符串的缓冲区的指 ...
- 对numpy.meshgrid()理解
一句话解释numpy.meshgrid()——生成网格点坐标矩阵.关键词:网格点,坐标矩阵 网格点是什么?坐标矩阵又是什么鬼?看个图就明白了: 图中,每个交叉点都是网格点,描述这些网格点的坐标的矩阵, ...
- Java变量在内存中的存储
目录 Java变量在内存中的存储 成员变量 局部变量 总结 Java变量在内存中的存储 以下探究成员变量和局部变量在内存中的存储情况. package com.my.pac04; /** * @aut ...
- 【NOI 2011】阿狸的打字机
Problem Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有 \(28\) 个按键,分别印有 \(26\) 个小写英文字母和 B . P 两个字母. ...
- 【编译系统02】编译器 - 语义分析器(semantic)的简单设计思路(变量类与变量表)
当我们分析到 "int n;",说明其已经定义了一个变量,之后又遇到一个 "n=3",我们从哪里去找这个n并且赋值呢? 答案是:通过我们定义的 变量表(Tabl ...