为什么总是触发“app.get('*')”

Why is `app.get('*')` always triggered?

本文关键字:get app 为什么      更新时间:2023-09-26

考虑一下这个小应用程序:

var express = require("express");
var app = express();
app.get("/json", function(req, res){
  console.log("JSON route");
  res.json({foo: "bar"});
});
app.get("/", function(req, res){
  console.log("Slash route");
  res.send("Hello");
});
app.get("*", function(req, res){
  console.log("Star route");
  res.redirect("/");
});
app.listen(3000, function(){
  console.log("Listening.");
});

每当我在浏览器中转到localhost:3000localhost:3000/json时,我都可以从服务器日志中看到星形*路由也会被触发。如果将其更改为app.get("/*") ,则仍然如此

为什么会这样?我以为res.sendres.json停止了执行。

当你用浏览器请求某个东西时,它会自动尝试请求一个favicon。由于您的服务器没有为favicon定义路由,因此会转到*路由,从而导致这种混乱。