【问题标题】:Random routes in node server节点服务器中的随机路由
【发布时间】:2016-05-27 15:05:17
【问题描述】:

我使用以下内容创建了一个服务器:

function randomString(length) {
    var result = '';
    var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    for (var i = length; i > 0; --i) 
        result += chars[Math.floor(Math.random() * chars.length)];
    return result;
}

var cron = require('node-cron');
var rString = randomString(12);
cron.schedule('15,30,45 * * * * *', function(){
    rString = randomString(12);
    app.get("/"+rString, function(req, res){
        //Whatever you need goes here.
        res.send("Yo"); 
    });
    console.log("Your random route is: localhost:3000/"+rString);
});

//Tried this too
/*app.get("/"+rString, function(req, res){
        //Whatever you need goes here.
        res.send("Yo"); 
});*/
console.log("Your random route is: localhost:3000/"+rString);

app.get("*",function(req,res){
   res.send("Sorry no link found!"); 
});

app.listen(3000);

我正在尝试每 15 秒为我的服务器生成新路由。当我将 app.get 放入 cron 作业时,它根本不会创建新路由。其次,创建了初始路由,但是在更新 rString 时,它不会使初始路由无效并创建新路由。

【问题讨论】:

  • 我对这个过程没有太多深入的了解,但我认为它在我们启动服务器时会编译我们的 app.js 和其他路由文件。我认为这就是为什么每当我们添加新路由或更改路由文件或 app.js 中的任何内容时,我们都需要重新启动服务器(使用 npm 或永远等)。
  • 您可以使用带有一些正则表达式的单个路由,而不是注册那么多单独的路由,对于随机令牌,您可以使用 Redis In Memory 数据库,在该路由函数中,您可以检查来自 Redis 的令牌并处理相应地。
  • @JitendraKhatri 我找到了更好的方法。我已经发布了解决方案。

标签: javascript node.js express cron


【解决方案1】:

好吧,我找到了一种方法。

var express = require("express");
var app = express();

function randomString(length) {
    var result = '';
    var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    for (var i = length; i > 0; --i) 
        result += chars[Math.floor(Math.random() * chars.length)];
    return result;
}

var cron = require('node-cron');
var rString = randomString(12);
cron.schedule('15,30,45 * * * * *', function(){
    rString = randomString(12);
    console.log("Your random route is: localhost:3000/"+rString);
});

console.log("Your random route is: localhost:3000/"+rString);
app.get("/:randomStr", function(req, res){
    if(req.params.randomStr === rString)
        res.send("Yo!")
    else
        res.send("Sorry no link found!");
});    
app.get("*",function(req,res){
    res.send("Sorry no link found!"); 
});

app.listen(3000);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-12
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 1970-01-01
    • 2019-07-03
    相关资源
    最近更新 更多