├── .gitignore ├── README.md ├── package.json └── app.js /.gitignore: -------------------------------------------------------------------------------- 1 | ee https://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | 6 | # production 7 | /build 8 | 9 | # misc 10 | /.idea 11 | /.vscode 12 | .DS_Store 13 | .env 14 | npm-debug.log* 15 | yarn-debug.log* 16 | yarn-error.log* -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # node跨域代理转发 2 | 3 | ## 使用 4 | 5 | #### 1.克隆到本地 6 | `git clone https://github.com/shifeng1993/nodeServer.git` 7 | #### 2.进入nodeServer文件夹 8 | `cd nodeServer` 9 | #### 3.安装所有npm依赖 10 | `npm install` 11 | #### 4.启动代理跨域转发服务 12 | `node app` 13 | 14 | ## 注意:需要修改的地方代码中有注释提示,其余则不用动。 15 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "server", 3 | "version": "1.0.0", 4 | "description": "this is server app", 5 | "main": "app.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "devDependencies": { 12 | "body-parser": "^1.15.2", 13 | "express": "^4.14.0", 14 | "http": "0.0.0", 15 | "mockjs": "^1.0.1-beta3", 16 | "superagent": "^3.0.0" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app.js: -------------------------------------------------------------------------------- 1 | // ps:使用之前请先阅读README.md文件 2 | // 3 | /****************************定义和引入********************************/ 4 | // 引入模块 5 | var http = require('http'); 6 | var express = require('express'); 7 | var app = express(); 8 | var bodyParser = require("body-parser"); 9 | var superagent = require('superagent'); //http://visionmedia.github.io/superagent/#response-properties 文档地址 10 | var server = http.Server(app); 11 | var host = 'http://localhost:'; 12 | var port = 9999; //设置本地转发服务端口 13 | var Mock = require('mockjs') 14 | 15 | /*************************以下为设置和启用*****************************/ 16 | // 设置node服务 17 | app.set('port', port); 18 | app.use(bodyParser.urlencoded({ 19 | extended: false 20 | })); 21 | app.use(bodyParser.json()); 22 | 23 | // 启动服务 24 | server.listen(app.get('port'), function() { 25 | console.log("服务已经启动,APIhost:" + host + port); 26 | }); 27 | 28 | /******************以下为此服务支持跨域请求********************/ 29 | app.all('*', function(req, res, next) { 30 | res.header('Access-Control-Allow-Origin', '*'); 31 | res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild'); 32 | res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS, PATCH'); 33 | res.set({ 34 | 'Content-Type': 'Content-Type:application/json; charset=UTF-8', 35 | }) 36 | if (req.method == 'OPTIONS') { 37 | res.send(200); 38 | } else { 39 | next(); 40 | } 41 | }); 42 | 43 | /******************以下是api公共部分,不用修改***********************/ 44 | // form 请求 45 | var form = function(req, res, API, log) { 46 | var sreq = superagent.post(dbUrl + API); 47 | sreq.type('form') 48 | sreq.send(req.body); 49 | sreq.pipe(res); 50 | sreq.on('end', function() { 51 | console.log(log); 52 | }); 53 | } 54 | 55 | // json 请求 56 | var json = function(req, res, API, log) { 57 | var sreq = superagent.post(dbUrl + API); 58 | sreq.type('json') 59 | sreq.send(req.body); 60 | sreq.pipe(res); 61 | sreq.on('end', function() { 62 | console.log(log); 63 | }); 64 | } 65 | 66 | /******************以下是api私有部分,必须修改***********************/ 67 | 68 | // 设置后端服务器url 69 | var dbUrl = 'http://test.com'; //这里写你的后端api地址 70 | 71 | //需配置部分 72 | // app.get('这里写node服务接受前端发送参数的地址', function(req, res) { 73 | // var API = '这里写后端java公共api,当然你们后端是什么的随意,,这里只是举个例子。' 74 | // var log = '这里写node服务输出logs'; 75 | // form(req, res, API, log) 76 | // }); 77 | 78 | //以下是不同请求发送方式 79 | 80 | // form请求示例 81 | app.get('/api/machine/init', function(req, res) { 82 | var API = '/api/v2/machine/init' 83 | var log = '初始化机器'; 84 | form(req, res, API, log) 85 | }); 86 | 87 | app.post('/api/machine/init', function(req, res) { 88 | var API = '/api/v2/machine/init' 89 | var log = '初始化机器'; 90 | form(req, res, API, log) 91 | }); 92 | 93 | app.put('/api/machine/init', function(req, res) { 94 | var API = '/api/v2/machine/init' 95 | var log = '初始化机器'; 96 | form(req, res, API, log) 97 | }); 98 | 99 | app.patch('/api/machine/init', function(req, res) { 100 | var API = '/api/v2/machine/init' 101 | var log = '初始化机器'; 102 | form(req, res, API, log) 103 | }); 104 | 105 | app.delete('/api/machine/init', function(req, res) { 106 | var API = '/api/v2/machine/init' 107 | var log = '初始化机器'; 108 | form(req, res, API, log) 109 | }); 110 | 111 | // json请求示例 112 | app.get('/api/machine/init', function(req, res) { 113 | var API = '/api/v2/machine/init' 114 | var log = '初始化机器'; 115 | json(req, res, API, log) 116 | }); 117 | 118 | app.post('/api/machine/init', function(req, res) { 119 | var API = '/api/v2/machine/init' 120 | var log = '初始化机器'; 121 | json(req, res, API, log) 122 | }); 123 | 124 | app.put('/api/machine/init', function(req, res) { 125 | var API = '/api/v2/machine/init' 126 | var log = '初始化机器'; 127 | json(req, res, API, log) 128 | }); 129 | 130 | app.patch('/api/machine/init', function(req, res) { 131 | var API = '/api/v2/machine/init' 132 | var log = '初始化机器'; 133 | json(req, res, API, log) 134 | }); 135 | 136 | app.delete('/api/machine/init', function(req, res) { 137 | var API = '/api/v2/machine/init' 138 | var log = '初始化机器'; 139 | json(req, res, API, log) 140 | }); 141 | 142 | // mock数据示例 143 | app.get('/goods/brand', function(req, res) { 144 | var data = Mock.mock(["鹰牌","维他","盒装","瓶装","特意浓","汇源","正宗","易购","恒大冰泉","宝矿力水特宝矿力水特","友芝友","光明畅优果粒"]) 145 | res.send(JSON.stringify(data)) 146 | console.log('goodsbrand') 147 | }) 148 | 149 | --------------------------------------------------------------------------------