2017-04-17 55 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