1. 程式人生 > >利用node express做的介面轉發支援get post

利用node express做的介面轉發支援get post

無視跨域

使用方法如下(前端)

後臺實現程式碼

var express = require('express'),
      https = require('https'),
	app = express(),
	bodyParser = require('body-parser'),
	fs = require('fs'),
	superagent = require('superagent');
var options = {
	key: fs.readFileSync('./https/zhangzehui.cn.key'),
	cert: fs.readFileSync('./https/zhangzehui.cn.crt')
};
//var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:true}));
   //攔截器允許跨域
app.all('*', function(req, res, next) {
    res.header("Access-Control-Allow-Origin", req.headers.origin);  
    res.header("Access-Control-Allow-Headers", "X-Requested-With");  
    res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");  
    res.header("X-Powered-By",' 3.2.1')  
    res.header("Content-Type", "application/json;charset=utf-8");
    // 允許證書 攜帶cookie
    res.header("Access-Control-Allow-Credentials", "true")
    next();
});
app.get('/get', function (req, res) {
	var data = req.query,
		ServerCookie = req.headers.cookie,
		nres = res;
	if (data.api =="" || data.api == undefined){
		res.json({"msg":"api欄位不能為空!"})
		return
	}
    var sreq = superagent.get(data.api);
    //如果使用 Accept存在的的話則設定為Accept的值
    if (data.Accept){
    	sreq.set({
	    	'Accept':data.Accept,
	    	'Content-Type':'application/json;charset=UTF-8'
    	})
    	// 判斷cookie是否存在存在則設定cookie
    	if (ServerCookie) {
    		sreq.set('Cookie',ServerCookie)
    	}
    }else{
    	sreq.set({
	    	'Accept':'application/json',
	    	'Content-Type':'application/json;charset=UTF-8'
    	})
    	if (ServerCookie) {
    		sreq.set('Cookie',ServerCookie)
    	}
    }
    if (data.datas){
    	sreq.query(data.datas)
    }
    sreq.end(function(err, res) {
    	if (err) {
            nres.json({"msg":"請求發生錯誤可能是api地址無效或者Accept設定不正確或者請求方式錯誤"})
        } else {
        	console.log(res)
        	if (JSON.stringify(res.body) == "{}"){
                        var text = res.text
        		if (text.charAt(0) == "{" && text.charAt(text.length-1) == "}"){
        			nres.json(JSON.parse(text))
        		} else {
                                nres.json({"data":text})
        		}
        	} else{
        		nres.json(res.body)
        	}
        }
    })
});
app.post('/post', function (req, res) {
	var data = req.body,
		ServerCookie = req.headers.cookie,
		nres = res;
	if (data.api =="" || data.api == undefined){
		res.json({"msg":"api欄位不能為空!"})
		return
	}	
    var sreq = superagent.post(data.api);
    if (data.Accept){
    	sreq.set({
	    	'Accept':data.Accept,
	    	'Content-Type':'application/json;charset=UTF-8'
    	})
    	// 判斷cookie是否存在存在則設定cookie
    	if (ServerCookie) {
    		sreq.set('Cookie',ServerCookie)
    	}
    }else{
    	sreq.set({
	    	'Accept':'application/json',
	    	'Content-Type':'application/json;charset=UTF-8'
    	})
    	if (ServerCookie) {
    		sreq.set('Cookie',ServerCookie)
    	}
    }
     if (data.datas){
    	sreq.send(data.datas)
    }
    sreq.end(function(err, res) {
    	if (err) {
//nres.send(err.response.text)
            nres.json({"msg":"請求發生錯誤可能是api地址無效或者Accept設定不正確或者請求方式錯誤"})
        } else {
        	console.log(res)
        	if (JSON.stringify(res.body) == "{}"){
        		var text = res.text
        		if (text.charAt(0)=="{" && text.charAt(text.length-1)=="}"){
        			nres.json(JSON.parse(text))
        		} else {
                                nres.json({"data":text})
        		}
        	} else{
        		nres.json(res.body)
        	}
        }
    })
});
app.get('/', function (req, res){
	if(req.query.echostr){
	res.end(req.query.echostr)
}else{
	res.send('歡迎訪問,此域名目前僅用於介面轉發(如果你是開發者請勿用於其他用途比如攻擊他人,技術交流出問題不負責),未用於其他用途!!!!bywzzhui 微博關注wzzehui')
}
})
//app.listen(443);
https.createServer(options, app).listen(443)

因為我現在用https協議所以監聽443 普通協議監聽設定80就行

相關推薦

利用node express介面轉發支援get post

無視跨域 使用方法如下(前端) 後臺實現程式碼 var express = require('express'), https = require('https'), app = express(), bodyParser = require('bo

Node.js+express介面適配getpost並輸出json

var dataSuccess = { status: '100', msg: '登入成功', data: { userId: '20170113',

node express 中介軟體 http-proxy-middleware 和 express-http-proxy 轉發 搞定 post 超時

2018-11-14 總結: http-proxy-middleware 轉發 post 請求 有問題,沒找到問題所在,換 express-http-proxy 代理。 前後端獨立開發,靜態檔案、模板等 前端express服務提供。後端負責介面。前端開發 轉發 ajax 到 測試伺服器或者開發伺服器。

RESTful介面規範之GET/POST/PUT/DELETE

REST 是Representational State Transfer的縮寫,翻譯是”表現層狀態轉化”. 面向資源是REST最明顯的特徵,對於同一個資源的一組不同的操作。資源是伺服器 上一個可命名的抽象概念,資源是以名詞為核心來組織的,首先關注的是名詞。REST要求,必須通過統一的介

C語言開發Linux下web伺服器(支援GET/POST,SSL,目錄顯示等)

這個主要是在CSAPP基礎上做的,添加了POST,SSL,目錄顯示等功能。一、實現功能:1.支援GET/POST方法2.支援SSL安全連線即HTTPS3.支援CGI4.基於IP地址和掩碼的認證5.目錄顯示6.日誌功能7.錯誤提示頁面二、設計原理首先介紹一些HTTP協議基本知識

POSTMan介面測試之get post

HTTP 定義了與伺服器互動的不同方法,最基本的方法是 GET 和 POST。事實上 GET 適用於多數請求,而保留 POST 僅用於更新站點。根據 HTTP 規範,GET 用於資訊獲取,而且應該是 安全的和冪等的。所謂安全的意味著該操作用於獲取資訊而非修改資訊。換句話說,GET 請求一般不應產生副作用。

Android開發介面測試工具GET/POST

POSTMAN首先得自備梯子,需翻牆,不能翻牆不要看了。 當後端人員給你介面以後,首先我們要測試一下,判斷一下是否接通,欄位型別是否正確,以免寫完了所以程式碼發現介面不對 這裡要寄出谷歌chrome應用市場裡的POSTMAN 就是長這個樣子的.

Node.js + Express 介面請求(GETPOST、PUT)事例

路由 路由是指應用程式的端點(URI)如何響應客戶端請求。有關路由的介紹,請參閱基本路由。 您可以使用Express app物件的方法定義路由,這些方法對應於HTTP方法; 例如,app.get()處理GET請求和app.post處理POST請求。有關完整列表,請參閱app.

利用Node.js的express模組搭建簡單伺服器(1)

前些日子在學習ajax時,順便學會了如何搭建一個簡單的本地web伺服器,因為只有這樣才能實現前後端的互動,更好的理解ajax的意義,以及資料傳輸的相關過程。 一、環境的搭建 1.Node.js安裝包及原始碼下載地址為:https://nodejs.org/en/download/ 

利用irc伺服器物聯網資料轉發 c# winform程式

利用irc協議的優點: 免費,不用購買伺服器就可以實現穩定公網轉發資料 開源,irc的客戶端和開源庫眾多,省去了自己造輪子的時間 歷史悠久,網際網路誕生伊始就有irc   缺點:安全性比較差   簡單協議接收可以用:https://kiwiirc.com/ 下面是傳送客戶端

node(express)+mongoDB寫查詢介面

HTML <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> &l

node寫資料介面,除錯,跨域,express中介軟體

進入服務端專案目錄下:1、npm init 建立package.json檔案;2、建立一個app.js檔案,下面的標註都有了,簡單的寫了一個介面,下面會用,對跨域訪問做了設定---------------------------------------------------

如何讓 Node-express 支援 XML 形式的 POST 請求?

express 是基於 connect 開發的,使用 bodyParser 對請求的包體進行解析,預設支援:application/json, application/x-www-form-urlencoded, 以及 multipart/form-data。 也就是說不支援對 XML 形式的包體進行解

利用express+node 建立本地伺服器並利用node代理處理跨域請求;

第一步 下載安裝node.js 第二步 初始化資料夾 命令: npm init 然後一路回車 第三步 安裝express,ejs, request, npm instal

Node.js+Express構建Http服務(GET方式和POST方式)

Node.js 前提 環境:windows7下載地址:http://nodejs.org/download/ 安裝 官網下載一個安裝檔案點選下一步安裝完成即可. 驗證安裝是否成功:node -v   基本HTTP伺服器 c:/http.js Js程式碼 

nodeexpress框架接收get/post請求時,引數獲取方式

一.接收get請求 情況一:引數是url的一部分: 1 eg:router.get('/nodeServer/dataSet/page/:name/:pageNum/:pageSize', function(request, resopnse){ 2 // 獲取引數name , pageNum

robotframework - 框架介面自動化get請求

1、做get請求之前先安裝 Request庫,參考github上鍊接 :https://github.com/bulkan/robotframework-requests/#readme 2、請求&響應使用moco來模擬伺服器,可參考此篇文件:Moco模擬伺服器post&get請求 (二)

Node教程——API介面開發(MangoDB+Express

git原始碼 說明:原始碼已經全部上傳到github,倉庫地址: https://github.com/BM-laoli/Node-api-Design 模組依賴關係圖 一、大綱 大綱: 關於架構, 首先我們的有一個app.js這個就是根路由起點,用來最初的打入口 它的功能有: 1.1 引入模組

postman介面自動化測試之利用node.js和xmysql連線、操作資料庫

一、背景 使用postman進行介面自動化測試時,除了要驗證介面的返回,有時候還要同時驗證資料庫的資料,或者將介面返回的資料與資料庫的資料做對比,檢驗資料的正確性。 有的時候還需要在執行自動化case之前,造一些測試資料,或者在跑完自動化之後,刪除測試資料。 所以,我們需要在postman裡連線並操作資料庫,

node+express+static完成簡單的文件下載

什麽 type node down res not logs var join 不多說什麽,直接上代碼 var express = require(‘express‘); var fs = require(‘fs‘) var path= require(‘path