2017-04-17 56 views
0

我當前正在使用節點模塊'request'來創建一個從用戶輸入的URL中獲取HTML數據的作業隊列。這是到目前爲止我的代碼:Node.js - URL的輸入驗證

var jobQueue = []; 

function processNextJob() { 
    if (jobQueue.length < 1) { 
     console.log("No jobs to complete"); 
    } 
    else { 
     var job = jobQueue[0]; 
     request(job.target , function (error, response, body) { 
      console.log(body);  
     }); 
     jobQueue.shift(); 
    } 
} 

代碼工作,如果我型喜歡的東西「http://www.google.com」或「http://facebook.com」,但如果我只鍵入「google.com」或「twitter.com」。 對於我爲用戶鍵入表單的任何有效鏈接發出http請求的最佳方式是什麼?例如,我希望在用戶輸入「google.com」或「www.google.com」時不需要「http://」,就可以使用它。 !

+0

你可以使用正則表達式來檢查,如果通過'http://'或'的https://'是用戶輸入的開始部分,如果不是,只是將它添加到左側的用戶輸入字符串。 – Webeng

+0

您可以查看節點的「url」模塊。 https://nodejs.org/api/url.html(最新節點v7.9.0) – hisener

回答

0

一個可能的解決方案是檢查網址有:如果沒有在一開始並在前面加上它例如「HTTP //」:

var prefix = 'http://'; 
if (s.substr(0, prefix.length) !== prefix) { 
    s = prefix + s; 
} 

作爲一個說明,我會推薦格式字符串在輸入時而不是在處理時,這樣,如果你在不同的函數中使用它們,你是不會再檢查它們是否被正確地格式化了。

Source