Express 路由

1. Express 路由

1.1 路由的概念

1. 什么是路由

广义上来讲,路由就是映射关系。

2. 现实生活中的路由

在这里插入图片描述

按键 1 -> 业务查询

按键 2 -> 手机充值

按键 3 -> 业务办理

按键 4 -> 密码服务与停复机

按键 5 -> 家庭宽带

按键 6 -> 话费流量

按键 8 -> 集团业务

按键 0 -> 人工服务

在这里,路由是按键服务之间的映射关系

3. Express 中的路由

在 Express 中,路由指的是客户端的请求服务器处理函数之间的映射关系

Express 中的路由分 3 部分组成,分别是请求的类型请求的 URL 地址处理函数,格式如下:

app.METHOD('PATH',HANDLE);
app.post('/user',(req,res)=>{});
app.get('/user',(req,res)=>{})

4. Express 中的路由的例子

// 匹配 GET 请求,且请求 URL 为 /user
app.post('/user',(req,res)=>{
    res.send('Hello get request!');
});
// 匹配 POST 请求,且请求 URL 为 /user
app.get('/user',(req,res)=>{
    res.send('Got a POST request!');
});

5. 路由的匹配过程

每当一个请求到达服务器之后,需要先经过路由的匹配,只有匹配成功之后,才会调用对应的处理函数。

在匹配时,会按照路由的顺序进行匹配,如果请求类型请求的 URL 同时匹配成功,则 Express 会将这次请求,转交给对应的 function 函数进行处理。

在这里插入图片描述

路由匹配的注意点:

①按照定义的先后顺序进行匹配

请求类型请求的URL同时匹配成功,才会调用对应的处理函数

2.2 路由的使用

1. 最简单的用法

在 Express 中使用路由最简单的方式,就是把路由挂载到 app 上,示例代码如下:

const express = require('express');
const app = express();

// 挂载路由
app.get('/', (req, res) => {
    res.send('Hello GET request!');
});

app.post('/', (req, res) => {
    res.send('Got a POST request!');
});

app.listen(80, () => {
    console.log('express server running at http://127.0.0.1');
});

2. 模块化路由

为了方便对路由进行模块化的管理,Express 不建议将路由直接挂载到 app 上,而是推荐将路由抽离为单独的模块

将路由抽离为单独模块的步骤如下:

①创建路由模块对应的 .js 文件

②调用 express.Router() 函数创建路由对象

③向路由对象上挂载具体的路由

④使用 module.exports 向外共享路由对象

⑤使用 app.use() 函数注册路由模块

3. 创建路由模块&注册路由模块

在这里插入图片描述

4. 为路由模块添加前缀

类似于托管静态资源时,为静态资源统一挂载访问前缀一样,路由模块添加前缀的方式也非常简单:

在这里插入图片描述

### 如何配置 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、付费专栏及课程。

余额充值