node使用express中对于不存在路径如何处理(404页面处理)

最近做项目,发现express中router,对于不存在的路径如何处理直接看代码

引入router模块


路由页面


问题来了,对于用户输入不存在的路径改如何处理

比如127.0.0.1/2


但是不存在的路径,服务端如何给一个不存在的路径呢

比如127.0.0.1/ddgd


首先我们匹配一下,发现会匹配到/:id可以再这个函数里有一个next


我这边路径都是127.0.0.1/数字如果不是了,或则一个不存在的路径
只需要在路由最后加一个统一处理中间件:

// 挂载路由,代码略...

app.use((req, res, next) => {
  res.render('404.html')
})

// 其它代码...
注意:上面代码一定要放在所有路由中间件之后,原理就是当前面没有任何一个路由可以处理的时候,程序就会走到最后这个中间件,然后就可以当作 404 来处理了。                                                                                                                                                  
或则加一个通配符操作
router.get('*', function(req, res){
  res.sendfile('./public/404.html');
});
可以参考地址https://expressjs.com/en/guide/routing.html
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一些指导和提示,但是我需要更多的信息来确保我的回答符合您的需求。 首先,您需要了解这些技术的基本概念和用法。以下是一些关键点: - Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时,可用于构建高性能的网络应用程序。 - ExpressNode.js 最流行的 web 框架之一,它提供了一组强大的功能和工具,使得构建 web 应用程序变得更加容易。 - JWT(JSON Web Token)是一种基于 JSON 的开放标准,用于在网络应用程序之间安全地传输信息。JWT 包含加密的信息,可以被验证和信任。 - Angular 是一个流行的前端框架,用于构建单页应用程序。它使用 TypeScript 编写,并提供了一组强大的工具和组件来简化开发。 - MySQL 是一种流行的关系型数据库,常用于存储应用程序的数据。 现在,让我们来看看如何将这些技术组合在一起构建一个应用程序。 首先,您需要创建一个 Node.js 项目,并使用 Express 框架创建一个基本的 web 服务器。您可以使用以下命令创建一个新项目: ``` mkdir myapp cd myapp npm init ``` 然后,您可以使用以下命令安装 Express: ``` npm install express ``` 接下来,您需要创建一个 Express 应用程序,并配置路由和间件。您可以使用以下代码创建一个基本的 Express 应用程序: ```javascript const express = require('express') const app = express() app.use(express.json()) app.get('/', (req, res) => { res.send('Hello, world!') }) app.listen(3000, () => { console.log('Server started on port 3000') }) ``` 这个应用程序使用 `express.json()` 间件来解析请求体的 JSON 数据,并定义了一个基本的路由,该路由将在根路径上返回一个简单的“Hello, world!”消息。 接下来,您需要配置身份验证和授权。您可以使用 JWT 来实现身份验证和授权。您可以使用以下代码生成和验证 JWT: ```javascript const jwt = require('jsonwebtoken') const secret = 'mysecret' function generateToken(user) { const payload = { id: user.id, name: user.name } const options = { expiresIn: '1h' } return jwt.sign(payload, secret, options) } function verifyToken(token) { return jwt.verify(token, secret) } ``` 这个代码定义了两个函数,一个用于生成 JWT,另一个用于验证 JWT。 接下来,您需要创建一个 MySQL 数据库,并使用 Node.js 的 mysql 模块连接到它。您可以使用以下代码连接到 MySQL 数据库: ```javascript const mysql = require('mysql') const connection = mysql.createConnection({ host: 'localhost', user: 'username', password: 'password', database: 'myapp' }) connection.connect((err) => { if (err) { console.error('Error connecting to database', err) } else { console.log('Connected to database') } }) ``` 这个代码使用 `mysql.createConnection()` 函数创建一个 MySQL 连接,并使用 `connection.connect()` 函数连接到数据库。 最后,您需要创建一个 Angular 应用程序,并使用它来调用您的 Express API。您可以使用以下代码创建一个基本的 Angular 应用程序: ``` ng new myapp cd myapp ng serve ``` 这个应用程序使用 Angular CLI 创建一个基本的 Angular 应用程序,并使用 `ng serve` 命令启动开发服务器。 接下来,您需要添加一个服务来调用您的 Express API。您可以使用以下代码创建一个基本的 Angular 服务: ```typescript import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; @Injectable({ providedIn: 'root' }) export class ApiService { private baseUrl = 'http://localhost:3000'; constructor(private http: HttpClient) { } public getHello() { return this.http.get(`${this.baseUrl}/hello`); } public login(credentials) { return this.http.post(`${this.baseUrl}/login`, credentials); } } ``` 这个代码定义了一个名为 `ApiService` 的 Angular 服务,它使用 `HttpClient` 模块来调用 Express API 的端点。 现在,您可以在 Angular 组件使用这个服务来调用 Express API。例如,以下代码演示了如何在 Angular 组件调用 `ApiService.getHello()`: ```typescript import { Component } from '@angular/core'; import { ApiService } from './api.service'; @Component({ selector: 'app-root', template: ` <h1>{{ message }}</h1> ` }) export class AppComponent { public message: string; constructor(private apiService: ApiService) { } ngOnInit() { this.apiService.getHello().subscribe((response: any) => { this.message = response.message; }); } } ``` 这个代码定义了一个名为 `AppComponent` 的 Angular 组件,它使用 `ApiService` 来调用 Express API 的 `/hello` 端点,并将响应的消息显示在页面上。 这只是一个简单的示例,您可以根据自己的需求进行更改和扩展。希望这可以帮助您开始构建您的应用程序!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值