express路由

来源:互联网 发布:宁夏专业继续教育网络 编辑:程序博客网 时间:2024/05/21 05:19

这篇教程只是对 Express 路由做一个简单的介绍。路由(Routing)是由一个 URI(或者叫路径)和一个特定的 HTTP 方法(GET、POST 等)组成的,涉及到应用如何响应客户端对某个网站节点的访问。

// 对网站首页的访问返回 "Hello World!" 字样app.get('/', function (req, res) {  res.send('Hello World!');});// 网站首页接受 POST 请求app.post('/', function (req, res) {  res.send('Got a POST request');});// /user 节点接受 PUT 请求app.put('/user', function (req, res) {  res.send('Got a PUT request at /user');});// /user 节点接受 DELETE 请求app.delete('/user', function (req, res) {  res.send('Got a DELETE request at /user');});});

使用字符串模式的路由路径示例:

// 匹配 acd 和 abcdapp.get('/ab?cd', function(req, res) {  res.send('ab?cd');});// 匹配 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');});// 匹配 /abe 和 /abcdeapp.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$/');});

使用一个回调函数处理路由:

app.get('/example/a', function (req, res) {  res.send('Hello from A!');});使用多个回调函数处理路由(记得指定 next 对象):app.get('/example/b', function (req, res, next) {  console.log('response will be sent by the next function ...');  next();}, function (req, res) {  res.send('Hello from B!');});

使用回调函数数组处理路由:

var cb0 = function (req, res, next) {  console.log('CB0');  next();}var cb1 = function (req, res, next) {  console.log('CB1');  next();}var cb2 = function (req, res) {  res.send('Hello from C!');}app.get('/example/c', [cb0, cb1, cb2]);express.Router

可使用 express.Router 类创建模块化、可挂载的路由句柄。Router 实例是一个完整的中间件和路由系统,因此常称其为一个 “mini-app”。
下面的实例程序创建了一个路由模块,并加载了一个中间件,定义了一些路由,并且将它们挂载至应用的路径上。
在 app 目录下创建名为 index.js 的文件,内容如下:

var express = require('express');var router = express.Router();/* GET users listing. */router.get('/', function(req, res, next) {  res.send('respond with a resource');});module.exports = router;module.exports = router;

然后在应用中加载路由模块:

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

应用即可处理发自 /birds 和 /birds/about 的请求,并且调用为该路由指定的 timeLog 中间件。

0 0
原创粉丝点击