簡體   English   中英

從HTTP請求中提取額外的參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM