【问题标题】:How to deal when calling a wrong endpoint using app.get?使用app.get调用错误端点时如何处理?
【发布时间】:2019-03-04 06:19:33
【问题描述】:

我定义了几个端点。我正在对所有这些进行自动化处理,此外还定义了一些我应该得到错误的场景。

例如,端点之一是:'/v1/templates'。

现在,想象一下,用户键入了“/v1/templatess”。

我正在使用 app.get 来处理这样的已知端点:

app.get(
    '/v1/contents/:template_component_content_id',
    controllers.template_component_contents.getById.bind(controllers.template_component_contents)
);

有没有办法说如果调用的端点与任何 app.get() 选项不匹配,则抛出错误?

提前致谢。

【问题讨论】:

    标签: node.js api express http-status-code-403


    【解决方案1】:

    app.js 写在下面你需要routes的地方

    const express = require('express');
    const app = express();
    
    app.use((req, res, next)=>{
      res.status(404).send({message:"Not Found"});
    });
    

    如果你想从后端显示一些页面

    app.use((req, res, next)=>{
      res.render('./path/to/file');
    });
    

    更多参考请查看这个 github 项目

    nodejs_boiler_plate/app.js

    【讨论】:

      【解决方案2】:

      您可以使用 express 处理程序处理 404。

      在您的主要 express 文件(可能是 index.js 或 app.js)中,只需在路由中间件之后添加以下内容。

      app.use("/v1", your_router);
      
      // catch 404 and forward to error handler
      app.use((request, response, next) => {
        // Access response variable and handle it
        // response.status(404).send("Your page is not found"))
        // or
        // res.render("home")
      });
      

      你也可以通过额外的路线来实现这一点

      app.get('*', (req, res) => {})
      

      但不建议这样做,因为它是正则表达式操作,并且 express 已经提供了内置处理程序来处理 404 路由。

      【讨论】:

        【解决方案3】:

        试试类似的东西:

        app.get('*', (req, res) => {
          res.send({error: "No routes matched"});
          res.end();
        })
        

        将此代码添加为您的路线中的最后一条路线,我希望这样做会起到神奇的作用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-06
          • 2014-05-08
          • 2016-02-18
          • 1970-01-01
          相关资源
          最近更新 更多