MST

星途 面试题库

面试题:Node.js中Express框架的路由原理

请简要描述在Node.js的Express框架中,路由是如何工作的?包括路由的定义、匹配规则以及如何处理不同HTTP方法的请求。
10.3万 热度难度
前端开发Node.js

知识考点

AI 面试

面试题答案

一键面试

路由定义

在Express框架中,路由定义通过app对象(Express应用实例)的各种方法实现。常用方法有:

  • app.METHOD(path, callback)METHOD是HTTP方法,如getpost等;path是请求的URL路径;callback是处理请求的函数。例如:
const express = require('express');
const app = express();

app.get('/home', (req, res) => {
    res.send('This is the home page');
});

匹配规则

  1. 路径匹配:路径可以是字符串形式的具体路径,如/users,也可以包含参数,如/users/:id。参数部分(以:开头)会被捕获并作为req.params对象的属性。例如:
app.get('/users/:id', (req, res) => {
    const userId = req.params.id;
    res.send(`User ID is ${userId}`);
});
  1. 按顺序匹配:Express按定义的顺序匹配路由。一旦找到匹配的路由,就会执行相应的处理函数,不再继续匹配后续路由。所以将更具体的路由定义放在前面很重要。

处理不同HTTP方法的请求

  1. 常用HTTP方法
    • GET:用于获取资源,通过app.get定义。例如获取文章列表:
app.get('/articles', (req, res) => {
    // 从数据库获取文章数据并返回
    res.send('Article list');
});
- **POST**:用于提交数据创建新资源,通过`app.post`定义。例如提交用户注册信息:
app.post('/register', (req, res) => {
    // 处理用户注册逻辑
    res.send('Registration successful');
});
- **PUT**:用于更新资源,通过`app.put`定义。例如更新用户信息:
app.put('/users/:id', (req, res) => {
    // 根据req.params.id更新用户信息
    res.send('User updated');
});
- **DELETE**:用于删除资源,通过`app.delete`定义。例如删除文章:
app.delete('/articles/:id', (req, res) => {
    // 根据req.params.id删除文章
    res.send('Article deleted');
});
  1. 使用app.all处理所有HTTP方法app.all方法可针对所有HTTP方法定义处理函数。例如:
app.all('/secret', (req, res, next) => {
    // 在此处进行通用的请求处理,如身份验证
    if (req.user.isAuthenticated) {
        next();
    } else {
        res.send('Access denied');
    }
});

这样,无论对/secret路径发起何种HTTP方法的请求,都会先经过app.all定义的处理函数。