[英]Extracting extra parameters from HTTP request
假設我向節點服務器發送了獲取JS文件的請求:
<script src="/blabla.js" id="545234677">
在我的Node端:
app.get('/blabla.js', function(req, res, next) {
console.log(req.params.id); //undefined
res.setHeader('content-type', 'text/javascript');
res.render('blabla'); //default
});
最后我有這個模板文件blabla.ejs:
var id = <%= id %>
現在,我嘗試獲取該id參數,但是顯示為undefined。 我正在使用Express和EJS,一旦獲得該ID,便想處理一個EJS文件並發回一個JS文件,該文件根據我的節點應用程序收到的ID進行調整。 謝謝。
這樣做的方式可能是這樣的-在HTML中,您將請求JS文件,如下所示:
<script src="/blabla.js?id=545234677">
為了明了,您將執行以下操作:
app.get('/blabla.js', function(req, res, next) {
console.log(req.query.id);
res.setHeader('content-type', 'text/javascript');
// Pass id into the renderer
res.render('blabla', {id: req.query.id}); //default
});
盡管渲染通常用於渲染HTML。 可能有更好的方法可以更優雅地完成您想要的事情。
注意: req.params
可以工作,但是會使URL看起來像/blabla.js/545234677
。 請參閱有關req.params的文檔 。
如何將腳本更改為
<script src="[filename][id].js"></script>
EG: <script src="blabla123.js"></script>
然后您可以使用正則表達式
app.get(/^\/([a-zA-z]*)([0-9]*).js/,function(req,res,next){
var fileName = req.params['0'],
id = req.params['1'];
console.log(fileName);
console.log(id);
// Now since you have both fileName and id as you required, you can
// use it to dynamically serve the content
// if(file=='' && id==''){//logic}
// If you want static file Name, modify the regular expression accordingly
})
只需根據您的需要和完成的操作在上述示例中修改正則表達式即可。 目前,上述正則表達式可與以下任何一項匹配
/.js
/[numeric].js
/[alphabet].js
/[alphabet][numerals].js
我希望這有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.