Express 路由

在Web开发中,路由是指应用程序如何响应客户端对不同URL的请求。Express作为Node.js的一个高效、灵活的Web应用框架,提供了强大的路由功能,使得处理各种HTTP请求变得简单而直观。本文将详细介绍Express中的路由机制,包括基本用法、路由参数、路由链式定义以及中间件等。

一、什么是路由?

在Express中,路由指的是应用程序根据不同的HTTP方法(如GET、POST、PUT、DELETE等)和URL路径来决定如何响应客户端请求的过程。每个路由可以有一个或多个处理函数,这些函数会在匹配到相应的HTTP请求时执行。

基本语法:

app.METHOD(PATH, HANDLER);
  • app是Express应用实例。
  • METHOD是HTTP方法的大写形式,例如GETPOST等。
  • PATH是请求的路径。
  • HANDLER是一个回调函数,当路由匹配时会调用这个函数。
示例:
const express = require('express');
const app = express();

app.get('/', (req, res) => {
    res.send('Home Page');
});

app.post('/submit', (req, res) => {
    res.send('Form Submitted');
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));

在这个例子中,我们定义了两个路由:一个是根路径(/)上的GET请求,另一个是/submit路径上的POST请求。

二、路由参数

路由参数是一种获取动态URL部分的方法,允许你从URL中提取变量,并将其传递给路由处理函数。

定义方式:

在路径字符串中使用冒号:前缀来指定参数名称。

示例:
app.get('/users/:userId/books/:bookId', (req, res) => {
    res.send(req.params);
});

访问http://localhost:3000/users/123/books/456将会返回一个JSON对象:

{
    "userId": "123",
    "bookId": "456"
}

通过这种方式,你可以轻松地构建RESTful API,以支持动态资源查询。

三、路由链式定义

Express允许你链式定义多个中间件函数来处理同一个路由,这在需要进行多步操作时非常有用。

示例:
app.route('/book')
    .get((req, res) => {
        res.send('Get a random book');
    })
    .post((req, res) => {
        res.send('Add a book');
    })
    .put((req, res) => {
        res.send('Update the book');
    });

这里,我们为/book路径定义了三个不同的HTTP方法处理函数,分别用于获取、添加和更新书籍信息。

四、路由中间件

中间件是在请求到达最终的路由处理函数之前或之后执行的函数。它们可以用来执行一系列任务,比如日志记录、身份验证等。

使用示例:

function logOriginalUrl(req, res, next) {
    console.log('Request URL:', req.originalUrl);
    next();
}

function logMethod(req, res, next) {
    console.log('Request Type:', req.method);
    next();
}

const router = express.Router();

router.get('/users', logOriginalUrl, logMethod, (req, res) => {
    res.send('List of users');
});

app.use(router);

在这个例子中,我们首先定义了两个中间件函数logOriginalUrllogMethod,然后在/users路由上使用它们。这样,在每次访问该路由时,都会先打印出请求的URL和类型,然后再进入实际的处理逻辑。

五、结语

感谢您的阅读!如果你有任何问题或想分享自己的经验,请在评论区留言交流!

### 如何配置 Express 路由以实现 CORS 允许跨域访问 为了使 Express 应用程序能够处理来自不同源的请求,可以使用 `cors` 中间件来简化 CORS 的配置。以下是具体做法: #### 安装并引入 cors 中间件 首先需安装 `cors` 模块,在项目根目录下执行命令 `npm install cors` 。之后可以在应用中通过如下方式加载此模块[^1]: ```javascript const express = require('express'); const cors = require('cors'); const app = express(); ``` #### 设置全局 CORS 支持 为了让所有的 HTTP 请求都能被正确响应而不受同源政策的影响,可以直接调用 `app.use()` 方法注册 `cors()` 函数作为全局中间件: ```javascript // 使用 cors 中间件 app.use(cors()); ``` 这行代码使得整个应用程序对于任何来源都开放了 CORS 访问权限。 #### 针对特定路径启用 CORS 如果只想让某些 API 接口支持跨域,则可以通过为指定路由添加 `cors()` 来达成目的。例如只允许 `/api/data` 这条 URL 下的所有操作不受限于同源限制: ```javascript // 对某个特定路径开启 CORS app.use('/api/data', cors()); // 或者更精确地控制 OPTIONS 请求预检机制 app.options('/api/data', cors()); // 处理预飞行请求 ``` #### 自定义 CORS 行为 当需要更加精细地调整 CORS 策略时,比如限定可信任域名列表、允许哪些 HTTP 动作以及自定义头部字段等,可通过传递选项对象给 `cors()` 实现定制化需求[^2] : ```javascript var allowCrossDomain = function(req, res, next) { res.set({ "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE", "Access-Control-Allow-Headers": "Content-Type" }); if ('OPTIONS' === req.method) { return res.sendStatus(204); } next(); }; app.use('/', allowCrossDomain); // 或者直接传入配置项到 cors() app.use(cors({ origin: ['http://example.com'], methods: ['GET','POST'], allowedHeaders: ['Content-Type'] })); ``` 以上就是关于如何利用 Express 和 Cors 解决跨域问题的一些基本介绍和实践案例[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值