如何处理Node.js中的未知页面?

时间:2018-03-29 04:43:00

标签: node.js express heroku

以下是关于Node.jsExpress应用的问题(HerokuCannot GET /xxyyyzzWhatever 。 我想处理未知的URL。更确切地说:

如果我在浏览器中查看此网址:https://myapp.herokuapp.com/我看到了我的期望。 如果我看这个:https://myapp.herokuapp.com/xxyyyzzWhatever我也看到了我的期望。那就是:

app.get('*', function(req, res, next) {
  setImmediate(() => { next(new Error('woops')); });
});

app.use(function(error, req, res, next) {
  const xPt = req.path.substring(1,req.path.length);
  res.json({ message: error.message reachPoint: xPt});
});

而不是显示:无法GET / xxyyyzzWhatever 我想做其他事情。此时我已经提到了这些文件: http://expressjs.com/en/guide/error-handling.htmlhttp://thecodebarbarian.com/80-20-guide-to-express-error-handling;我可以对显示的内容进行相当多的控制。

我已经实现了这种代码:

if (xPt.substring(0,1) == "A") {display("You are lucky");}
else if (xPt.substring(0,1) == "Z") {display("You are very unlucky");}
else if ((xPt.substring(0,1) >= "B")&&(xPt.substring(0,1) <= "R")) 
  {goto("https://stackoverflow.com/")}
else {goto("http://www.google.com/")}

但我真正想要的是:

public class search : IValidatableObject
{
    public string Sample1 { get; set; }
    public string Sample2 { get; set; }
    public string Sample3 { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) 
    { 
        var results = new List<ValidationResult>();
        if (string.IsNullOrEmpty(Sample1) && string.IsNullOrEmpty(Sample2) && string.IsNullOrEmpty(Sample3))
        {
            results.Add(new ValidationResult("Required."));
        }
        return results;
    }
}

在去的路上有什么小费吗?

1 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

app.use(function (req, res, next) {
  res.status(404).send("Sorry can't find that!")
});

https://expressjs.com/en/starter/faq.html