📜  NodeJs - 处理无效路由

📅  最后修改于: 2022-05-13 01:56:57.050000             🧑  作者: Mango

NodeJs - 处理无效路由

在开发 Node.Js 应用程序时,处理无效路由很重要。
可以通过编写自定义路由或将所有无效路由重定向到任何自定义页面来完成。

    让我们开发一个简单的 nodejs 服务器来处理无效路由:
  • 第一步:创建项目文件夹
    为无效路由项目创建一个单独的文件夹。
  • 第 2 步:创建 package.json
    Package.json 将通过在终端或命令提示符中键入以下命令来创建:
    npm init -y
  • 第 3 步:在项目的根目录上创建一个 javascript 文件:
  • 第 4 步:使用 express 创建一个简单的服务器:
    // importing express package for creating the express server
    const express = require('express'); 
    const app = express(); // creating an express object
      
    const port = 8000; //setting server port to 8000
      
    // for mounting static files to express server
    app.use(express.static(__dirname+'public/'));
      
    // listening server
    app.listen(port, function (err) {
        if(err){
            console.log("error while starting server");
        }
        else{
            console.log("server has been started at port "+port);
        }
    })
    
  • 第 5 步:定义路由
    app.get('/', function (req, res) {
        res.send("Ashish")
    })
    
    app.get('/geeksforgeeks', function (req, res) {
        res.sendFile(__dirname+'/public/geeksforgeeks.html')
    })
    

现在,我们将通过在终端或命令提示符中执行以下命令来启动我们的服务器:



node server.js

如果您的系统中安装了 nodemon,那么也可以使用以下链接来完成:
要了解更多关于 nodemon 以及如何使用它,请参考:这个

nodemon server.js

在这里,到目前为止,在我们的项目中,我们开发了两条路线:

  • 根路由(/)
    该路由将在http://localhost:8000/ 访问
  • Geeksforgeeks 路线(/geeksforgeeks)
    这条路线将在http://localhost:8000/geeksforgeeks 访问

现在,让我们尝试访问服务器文件中未定义的不同随机路由。

如屏幕截图所示,我们在尝试访问 /india 路由时遇到错误。

编写用于处理所有无效路由的自定义路由:
我们将为所有无效路由添加一个路由,如下所示:

app.get(‘*’, function(req, res){
res.sendFile(__dirname+’/public/error.html’);
}

现在,更新后的服务器文件将如下所示:

// importing express package for creating the express server
const express = require('express'); 
const app = express(); // creating an express object
  
const port = 8000; // setting server port to 8000
  
  
app.use(express.static(__dirname+'/public'));
  
// creating routes
app.get('/', function (req, res) {
    res.send("Ashish")
})
  
app.get('/geeksforgeeks', function (req, res) {
    res.sendFile(__dirname+'/public/geeksforgeeks.html')
})
  
app.get('*', function (req, res) {
    res.sendFile(__dirname+'/public/error.html');
})
  
  
// listening server
app.listen(port, function (err) {
    if(err){
        console.log("error while starting server");
    }
    else{
        console.log("server has been started at port "+port);
    }
})

让我们尝试访问相同的印度路线,我们遇到了无法获取 /India 错误

为此,网址将是: http://localhost:8000/india



现在,如果我们尝试访问任何随机无效或错误的路由,我们将获得如上所示的错误页面。

    要记住的要点:
  • 无效路由的路由应该放在所有路由的最后,因为路由是按照它们的写入顺序调用的。
  • 如果我们将这条路由写在开头或中间的某个地方,那么所有写在这条路由之后的路由都将不起作用,并将被重定向为无效路由。

让我们通过一个例子来理解这一点:
我们正在改变这里的路线顺序

// importing express package for creating the express server
const express = require('express'); 
const app = express(); // creating an express object
  
const port = 8000; // setting server port to 8000
  
  
app.use(express.static(__dirname+'/public'));
  
// creating routes
app.get('*', function (req, res) {
    res.sendFile(__dirname+'/public/error.html');
})
  
app.get('/', function (req, res) {
    res.send("Ashish")
})
  
app.get('/geeksforgeeks', function (req, res) {
    res.sendFile(__dirname+'/public/geeksforgeeks.html')
})
  
  
  
  
// listening server
app.listen(port, function (err) {
    if(err){
        console.log("error while starting server");
    }
    else{
        console.log("server has been started at port "+port);
    }
})

现在,我们将在访问任何在代码中定义或未定义的路由时获得无效路由响应,因为我们正在处理 server.js 顶部的无效路由

所以,有必要在所有路由的末尾编写自定义路由,以免干扰任何其他路由的函数。

这样,我们就可以处理 nodejs 中的 Invalid routes 访问。