專案想採用node作為中間層,
第一層瀏覽器發(fā)送請求到node
第二層node發(fā)送請求到php
略懂一點(diǎn)node和express框架,請問node如何發(fā)送請求到php拿到資料回前臺,有沒簡單易懂的方法。
使用了http-proxy-middleware
能拿到數(shù)據(jù),但是我想匹配到路由再發(fā)送請求到後臺渲染ejs模版。
const apiProxy = proxy('/do', { target: 'http://wx.lxjjz.cn',changeOrigin: true });//將服務(wù)器代理到localhost:8080端口上[本地服務(wù)器為localhost:3000]
app.use('*', apiProxy);//子目錄下的都是用代理
app.get('/index', function(req,res){
//我想在這里匹配到路由,然后在這里發(fā)送請求拿數(shù)據(jù)
//然后根據(jù)返回的數(shù)據(jù)傳送到ejs模版渲染
res.sendFile(__dirname+'/index.html');
});
客戶端
var contextPath = 'http://wx.lxjjz.cn';
$.ajax({
type:'get',
url:contextPath+'/do?g=api&m=hd&a=works-list',
success:function(data){
console.log(data);
},
error:function(data){
console.log(data);
}
})
業(yè)精于勤,荒于嬉;行成于思,毀于隨。
node有各種請求庫啊。自帶的還有request
整個(gè)流程大概就是
客戶端請求node伺服器
node伺服器請求php然後包裝回傳的response資料
將上面的包裝好的資料回傳給客戶端
要注意的就是要處理下回調(diào),如果要好看點(diǎn)可以使用promise或co模組等來處理非同步程式碼。
這個(gè)有各種解決辦法,我就說我們用的這個(gè)吧node-rest-client
比如使用express,自己寫個(gè)路由,如果/ajax
用於接受前端請求
前端請求都發(fā)到/ ajax就可以了,然後在/ajax裡面,使用node-rest-client將請求轉(zhuǎn)發(fā)到php,php回傳資料後,res.json(data)就可以了
當(dāng)然這中間你需要自己封裝統(tǒng)一一下資料等,這個(gè)都是小事,主要思路大概就是這樣的
如果只是代理轉(zhuǎn)發(fā)、
中間層不做任何資料封裝的話、可以使用這個(gè)中間件:
https://github.com/chimurai/h...
通常來講都是要node來進(jìn)行資料封裝的、api那一層不管業(yè)務(wù)、這樣可以解耦、
那就需要單獨(dú)做各種介面、拿到資料自己用lodash和moment重組、發(fā)給前臺、