首页 > 其他分享 >Express - 路由

Express - 路由

时间:2023-08-20 13:12:09浏览次数:32  
标签:function req res app Express next 路由

路由定义采用以下结构:

app.METHOD(PATH, HANDLER)

METHOD是请求方法,PATH是路径,HANDLER是处理路由的回调函数。

路由方法

Express 支持对应于 HTTP 方法的以下路由方法:get、post、put、head、delete、options、trace、copy、lock、mkcol、move、purge、propfind、proppatch、unlock、report、mkactivity、checkout、merge、m-search、notify、subscribe、unsubscribe、patch、search 和 connect。

特殊的,有一个路由方法“all”,用于在所有请求方法的路径中装入中间件函数。

在 Express.js 中,中间件是一个可以访问请求对象、响应对象和调用 next 方法的一个函数。在中间件函数中可以执行以下任何任务:执行任何代码、修改 request 或者 response 响应对象、结束请求响应周期、调用下一个中间件 。

在以下示例中,无论您使用 GET、POST、PUT、DELETE 还是在 http 模块中支持的其他任何 HTTP 请求方法,都将为针对“/secret”的请求执行处理程序。

app.all('/secret', function (req, res, next) {
  console.log('Accessing the secret section ...');
  next(); // pass control to the next handler
});

路由路径

路由路径支持两种匹配模式,字符串模式和正则模式。

字符串模式下可以使用字符 ?+*(),他们的含义与正则中的含义相同。
例如 '/ab(cd)?e' 将匹配 /abe/abcde 等路径。

app.get('/ab(cd)?e', function(req, res) {
 res.send('ab(cd)?e');
});

正则模式不需要引号包裹,直接使用正则表达式即可。
例如 /.*fly$/ 将匹配 butterflydragonfly,但是不匹配 butterflymandragonfly man 等。

app.get(/.*fly$/, function(req, res) {
  res.send('/.*fly$/');
});

路由处理函数

app.METHOD(PATH, HANDLER)

HANDLER是处理路由的回调函数。函数可以接受三个参数,req,res和next。
req 是 request 的缩写,表示 HTTP 请求。
res 是 response 的缩写,表示 HTTP 响应。
next 是一个函数,用于调用下一个中间件(下一个回调函数)。

你可以在HANDLER处传入多个回调函数,但是你要记得使用next函数调用下一个回调函数。

app.get('/example/b', function (req, res, next) {
  console.log('the response will be sent by the next function ...');
  next();
}, function (req, res) {
  res.send('Hello from B!');
});

res响应方法

方法 描述
res.download() 提示将要下载文件。
res.end() 结束响应进程。
res.json() 发送 JSON 响应。
res.jsonp() 在 JSONP 的支持下发送 JSON 响应。
res.redirect() 重定向请求。
res.render() 呈现视图模板。
res.send() 发送各种类型的响应。
res.sendFile() 以八位元流形式发送文件。
res.sendStatus() 设置响应状态码并以响应主体形式发送其字符串表示。

app.route()

可以使用 app.route() 为路由路径创建可链接的路由处理程序。 因为在单一位置指定路径,所以可以减少冗余和输入错误。

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

express.Router

使用 express.Router 类来创建可安装的模块化路由处理程序。Router 实例是完整的中间件和路由系统;因此,常常将其称为“微型应用程序”。

以下示例将路由器创建为模块,在其中装入中间件,定义一些路由,然后安装在主应用程序的路径中。

在应用程序目录中创建名为 birds.js 的路由器文件,其中包含以下内容:

var express = require('express');
var router = express.Router();

// middleware that is specific to this router
router.use(function timeLog(req, res, next) {
  console.log('Time: ', Date.now());
  next();
});
// define the home page route
router.get('/', function(req, res) {
  res.send('Birds home page');
});
// define the about route
router.get('/about', function(req, res) {
  res.send('About birds');
});

module.exports = router;

接着,在应用程序中装入路由器模块:

var birds = require('./birds');
...
app.use('/birds', birds);

此应用程序现在可处理针对 /birds 和 /birds/about 的请求,调用特定于此路由的 timeLog 中间件函数。

基本都是从官网教程抄过来的,看完之后建议读一下express-generator生成出来的应用的源码是怎么写的。

标签:function,req,res,app,Express,next,路由
From: https://www.cnblogs.com/orzmiku/p/Express_02.html

相关文章

  • Express - 模板引擎
    在使用模板引擎之前,需要设置模板目录,指定模板引擎。views:模板文件所在目录。例如:app.set('views','./views')viewengine:要使用的模板引擎。例如:app.set('viewengine','pug')设置好模板引擎之后,需要使用包管理器安装对应的模板引擎。npminstallpug--save下面以pug引......
  • 2-14-Gateway网关-路由断言工厂[15-Gateway网关-路由的过滤器配置]
    所谓的断言工厂与过滤器都是通过yml配置生效以下都将从配置的角度说明如何配置具体哪一个怎么用可以直接访问spring官网查看spring:cloud:gateway:routes:-id:user-serviceuri:lb://userservicepredicates:-Path=/us......
  • react项目搭建-路由封装
    routerv6路由统一管理与添加,对是否登录进行判断。1.使用脚手架创建项目新建一个文件夹,在文件夹内部打开命令行工具。执行命令:npxcreate-react-app项目名字将项目放在开发工具中,打开项目终端运行项目(npmstart/yarnstart)注:npx命令会帮助我们临时安装create-react-ap......
  • webman:配置路由(v1.5.7)
     一,官方文档地址:https://www.workerman.net/doc/webman/route.html二,php代码:config/route.php1234567891011121314151617181920<?php useWebman\Route; //指定默认页面Route::get('/',[app\controller\IndexController::class......
  • AOP源码解析:AspectJExpressionPointcutAdvisor类
    先看看AspectJExpressionPointcutAdvisor的类图再了解一下切点(Pointcut)表达式,它指定触发advice的方法,可以精确到返回参数,参数类型,方法名1packageconcert;23publicinterfacePerformance{4voidperform();5}AspectJExpressionPointcutAdvisor源码,官......
  • 构建高性能的后端服务:使用 Node.js、Express 和 MongoDB
    在现代应用开发中,构建高性能的后端服务是关键所在。本文将介绍如何使用Node.js、Express框架和MongoDB数据库来构建一个高性能的后端服务,实现数据存储与检索。为什么选择Node.js、Express和MongoDB?Node.js:Node.js是一个基于ChromeV8引擎的JavaScript运行时,具有非阻塞......
  • [LeetCode][10]regular-expression-matching
    ContentGivenaninputstrings andapatternp,implementregularexpressionmatchingwithsupportfor'.'and'*'where:'.'Matchesanysinglecharacter.​​​​'*'Matcheszeroormoreoftheprecedingelement.T......
  • LeetCode[10]RegularExpressionMatching
    ContentGivenaninputstrings andapatternp,implementregularexpressionmatchingwithsupportfor'.'and'*'where:'.'Matchesanysinglecharacter.​​​​'*'Matcheszeroormoreoftheprecedingelement.T......
  • Adobe Express正式对所有用户开放,并具备生成式AI功能
         据了解,日前Adobe宣布旗下的图形设计工具AdobeExpress目前已经向所有用户开放。AdobeExpress最初被称为AdobeSpark,针对现有的测试人员,部分高级功能将会继续限免一段时间,不过可以获得30天的高级会员试用,继续访问所有优质内容和功能obghtysuew。而该公司对该......
  • 4G工业路由器的功能与选型!详解工作原理、关键参数、典型品牌
    随着工业互联网的发展,4G工业路由器得到越来越广泛的应用。但是如何根据实际需求选择合适的4G工业路由器,是许多用户关心的问题。为此,本文将深入剖析4G工业路由器的工作原理、重要参数及选型要点,并推荐优质的品牌及产品,以提供选型参考。  一、4G工业路由器的工作原理4G......