Node.js后端开发 - 进阶篇 #4 express之注册路由app.get、app.use、app.all 的区别

文章目录

一、前言

二、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 在注册路由上的一些区别

二、app.get/post注册路由说明

我们讲基础篇章的时候,在没有用到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');
});

三、app.use注册路由说明

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/register123qwehttp://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');
});

四、app.all注册路由说明

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方法都可以访问

五、总结 app.get、app.use、app.all 注册路由

1、app.get/post/put 。。。

(1)区别请求方法,get/post/put等请求必须一一对应上,才能匹配到

(2)请求路径pathname必须和 /xxx 完全匹配

2、app.use

(1)在进行路由匹配的时候,它不区别请求方法,Http请求的get、post、put、delete方法都可以进行匹配

(2)请求路径中的第一部分只要与 /register 相等即可,并不要求请求路径pathname完全匹配

3、app.all

(1)它和app.use一样,在进行路由匹配的时候,它不区别请求方法,Http请求的get、post、put、delete方法都可以进行匹配

(2)请求路径pathname必须和 /xxx 完全匹配

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

被开发耽误的大厨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值