快速路由 - 根页面和404

时间:2016-05-17 12:06:31

标签: javascript node.js express

我正在使用Express的Node应用程序。在这个应用程序中,我有以下内容:

app.use('/', function(req, res) {
  res.render('index', {});            
}); 

这条路线适用于积极的情况。但是,它对于否定的情况是失败的。例如,如果我访问" http://www.example.com/404",我仍然会看到索引页面。实际上,我希望它能够通过,以便Express Error处理程序解决错误。

如何更改路线,以便当某人访问我的应用的根目录时,他们会看到主页。但是,如果他们输入其他内容,他们会看到404页面吗?

2 个答案:

答案 0 :(得分:1)

您想使用app.get()(或可能 app.all()),而不是app.use()

app.get('/', function(req, res) {
  res.render('index', {});
});

解释app.use('/', ...)/404匹配的原因here

  

路由将立即匹配其路径后面的任何路径“/”。例如:app.use('/apple', ...)将匹配“/ apple”,“/ apple / images”,“/ apple / images / news”等。

答案 1 :(得分:0)

您可以定义中间件以专门处理错误。

Express错误处理中间件需要四个参数,应该在所有其他路由之后定义:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Cockpit_RVI
{
    public partial class rx_check : System.Web.UI.Page
    {
        String rz_id;
        String datenmonat;
        protected void Page_Load(object sender, EventArgs e)
        {
            rz_id = Request.QueryString["rzid"];
            datenmonat = Request.QueryString["datum"];
            if (rz_id != null && datenmonat != null)
            {
                update_sql();
            } else {
                popup("Bitte benutzen Sie das RVI Cockpit, um auf diese Seite zu gelangen.");
            }
        }

        protected void popup(String text)
        {
            Page.ClientScript.RegisterStartupScript(this.GetType(), "Scripts", "<script>alert('" + text.Replace("\n", " ") + "');</script>");
        }

        protected void update_sql()
        {
            update_facharztgruppen();
            update_liefergebiete();
            update_verschreibungsgebiete();
            lbl_rechenzentrum.Text = "ARZ " + rz_id;
            lbl_datenmonat.Text = datenmonat;
        }

        protected void update_verschreibungsgebiete()
        {
            ds_verschreibungsgebiete.SelectCommand = String.Format(@"working sql, tested in sqldeveloper");

            ds_verschreibungsgebiete.SelectParameters.Clear();
            ds_verschreibungsgebiete.SelectParameters.Add("datenmonat", datenmonat);
            ds_verschreibungsgebiete.SelectParameters.Add("rz_id", rz_id);
            gv_verschreibungsgebiete.DataSource = ds_verschreibungsgebiete;
            gv_verschreibungsgebiete.DataBind();
        }

        protected void update_liefergebiete()
        {
            ds_liefergebiete.SelectCommand = String.Format(@"working sql, tested in sqldeveloper");

            ds_liefergebiete.SelectParameters.Clear();
            ds_liefergebiete.SelectParameters.Add("datenmonat", datenmonat);
            ds_liefergebiete.SelectParameters.Add("rz_id", rz_id);
            gv_liefergebiete.DataSource = ds_liefergebiete;
            gv_liefergebiete.DataBind();
        }

        protected void update_facharztgruppen()
        {
            String jahr = datenmonat.Substring(0, 4);
            ds_facharztgruppen.SelectCommand = String.Format(@"working sql, tested in sqldeveloper");
            ds_facharztgruppen.SelectParameters.Clear();
            ds_facharztgruppen.SelectParameters.Add("datenmonat", datenmonat);
            ds_facharztgruppen.SelectParameters.Add("rz_id", rz_id);
            gv_facharztgruppen.DataSource = ds_facharztgruppen;
            gv_facharztgruppen.DataBind();
        }
    }
}