文章目录
一、前言
二、app.get/post注册路由说明
三、app.use注册路由说明
四、app.all注册路由说明
五、总结 app.get、app.use、app.all 注册路由
1、app.get/post/put 。。。
2、app.use
3、app.all
上一篇文章我们对express实现 Hello World进行了详解以及讲了res.send()和res.end()在响应浏览器结束请求上的一些区别,详细可参考博文:Node.js后端开发 - 进阶篇 #3 express详解res.send()和res.end()的区别 这篇文章我们将讲解app.get、app.use、app.all 在注册路由上的一些区别
我们讲基础篇章的时候,在没有用到express框架的时候,我们是在一个很大请求函数里面,通过很多的if-else来判断不同的请求方法和路径来执行代码。现在我们不需要很多的if-else来判断执行,现在我们只需注册不同的路由,这些不同的路由会根据你每次请求不同的路径分别来执行。例如:我们还可以写get/post的add路由,代码如下:
//注册一个get请求 /register 的路由
//此注册路由的意思:
//1、请求方法必须是get
//2、请求路径的 pathname 必须等于(===)/register
app.get('/register', function (req, res) {
res.send('register')
});
//注册一个get请求 / 的路由
app.get('/', function (req, res) {
res.send('Hello,马总!')//响应给浏览器,结束请求
});
//注册一个get请求 /login 的路由
app.get('/login', function (req, res) {
res.send('login')
});
//注册一个get请求 /add 的路由
app.get('/add', function (req, res) {
res.send('get请求add')
});
//注册一个post请求 /add 的路由
app.post('/add', function (req, res) {
res.send('post请求add')
});
另外要说的是除了get/post,Http请求的get、post、put、delete方法都可以在里面类似这样注册路由!
下面是具体完整代码,大家可以自己运行程序,在浏览器上面输入:http://localhost:3000/register 等地址进行测试
//1、加载express模块
// const express:声明express变量,
// 这个express变量它是一个对象,它也可以作为一个函数来调用
const express = require('express');
//2、创建一个app对象( 类似于创建一个server对象 )
const app = express();//express作为一个函数来调用
//---------注册路由---------
//通过中间件监听指定的路由的请求
//注册一个get请求 /register 的路由
//此注册路由的意思:
//(1)请求方法必须是get
//(2)请求路径的 pathname 必须等于(===)/register
app.get('/register', function (req, res) {
res.send('register')
});
//注册一个get请求 / 的路由
app.get('/', function (req, res) {
res.send('Hello,马总!')//响应给浏览器,结束请求
});
//注册一个get请求 /login 的路由
app.get('/login', function (req, res) {
res.send('login')
});
//注册一个get请求 /add 的路由
app.get('/add', function (req, res) {
res.send('get请求add')
});
//注册一个post请求 /add 的路由
app.post('/add', function (req, res) {
res.send('post请求add')
});
//3、启动服务
//参数1:要监听的端口 参数2:回调函数
app.listen(3000, function () {
console.log('http://localhost:3030');
});
1、在进行路由匹配的时候,它不区别请求方法,Http请求的get、post、put、delete方法都可以进行匹配
2、如下面这段代码:请求路径中的第一部分只要与 /register 相等即可,并不要求请求路径pathname完全匹配
app.use('/register', function (req, res) {
res.send('register')
});
如下面这些路径都是可以访问到的
http://localhost:3000/register 、http://localhost:3000/register/info 、http://localhost:3000/register/info/details
但是如下这些路径是访问不到的
http://localhost:3000/register123qwe、http://localhost:3000/reg
下面是具体完整代码,大家可以自己运行程序,在浏览器上测试看看
//1、加载express模块
// const express:声明express变量,
// 这个express变量它是一个对象,它也可以作为一个函数来调用
const express = require('express');
//2、创建一个app对象( 类似于创建一个server对象 )
const app = express();//express作为一个函数来调用
//---------注册路由---------
//通过中间件监听指定的路由的请求
app.use('/register', function (req, res) {
res.send('register')
});
//3、启动服务
//参数1:要监听的端口 参数2:回调函数
app.listen(3000, function () {
console.log('http://localhost:3030');
});
1、它和app.use一样,在进行路由匹配的时候,它不区别请求方法,Http请求的get、post、put、delete方法都可以进行匹配
2、如下面这段代码:请求路径pathname必须和 /register 完全匹配
app.all('/register', function (req, res) {
res.send('register')
});
即路径为:http://localhost:3000/register 可以,其他不是 /register 不行
另外浏览器进行 Http请求的get、post、put、delete方法都可以访问
(1)区别请求方法,get/post/put等请求必须一一对应上,才能匹配到
(2)请求路径pathname必须和 /xxx 完全匹配
(1)在进行路由匹配的时候,它不区别请求方法,Http请求的get、post、put、delete方法都可以进行匹配
(2)请求路径中的第一部分只要与 /register 相等即可,并不要求请求路径pathname完全匹配
(1)它和app.use一样,在进行路由匹配的时候,它不区别请求方法,Http请求的get、post、put、delete方法都可以进行匹配
(2)请求路径pathname必须和 /xxx 完全匹配