什么是路由?
路由是指如何定义的端点(URIs)以及如何响应客户端的请求。
结构
路由是由一个 URI、HTTP 请求(GET、POST等)和若干个句柄组成,它的结构如下: app.METHOD(path, [callback…], callback), app 是 express 对象的一个实例, METHOD 是一个 HTTP 请求方法, path 是服务器上的路径, callback 是当路由匹配时要执行的函数。
下边是一个基本的路由示例:
const express = require('express');
const app = express();
app.get("/",(req,res)=>{
res.send(hello world);
})
路由路径和请求方法一起定义了请求的端点,它可以是字符串、字符串模式或者正则表达式。
匹配根路径的请求
app.get('/', function (req, res) {
res.send('root');
});
匹配 /about 路径的请求
app.get('/about', function (req, res) {
res.send('about');
});
匹配 /random.text 路径的请求
app.get('/random.text', function (req, res) {
res.send('random.text');
});
使用字符串模式的路由路径
// 匹配 acd 和 abcd
app.get('/ab?cd', function(req, res) {
res.send('ab?cd');
});
// 匹配 /ab/******
app.get('/ab/:id', function(req, res) {
const { id } = req.params;
res.send('aaaaaaa');
});
// 匹配 abcd、abbcd、abbbcd等
app.get('/ab+cd', function(req, res) {
res.send('ab+cd');
});
// 匹配 abcd、abxcd、abRABDOMcd、ab123cd等
app.get('/ab*cd', function(req, res) {
res.send('ab*cd');
});
// 匹配 /abcde、/abcdcdcdcded等
app.get('/ab(cd)+e', function(req, res) {
res.send('ab(cd)?e');
});
使用正则表达式的路由路径
// 匹配任何路径中含有 a 的路径:
app.get(/a/, function(req, res) {
res.send('/a/');
});
// 匹配 butterfly、dragonfly,不匹配 butterflyman、dragonfly man等
app.get(/.*fly$/, function(req, res) {
res.send('/.*fly$/');
});