以下是关于Node.js
我Express
应用的问题(Heroku
)Cannot 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.html和http://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;
}
}
在去的路上有什么小费吗?
答案 0 :(得分:0)
您可以使用以下内容:
app.use(function (req, res, next) {
res.status(404).send("Sorry can't find that!")
});