可以参考Express官网关于路由一节:http://expressjs.com/guide/routing.html

1:通过使用GET、POST方式定义主页路由,app.js:

var express = require('express');
var app = express(); app.get('/', function(req,res){
res.send('欢迎来到Express首页');
});
app.post('/', function(req,res){
res.send('Welcome to Express Index.');
});

2:路由路径以及参数定义

var express = require('express');
var app = express(); app.get('/users', function(req,res){
res.send('获取用户列表');
});
app.get('/users/:id', function(req,res){
res.send('user id:'+req.params.id);
});

浏览器中输入:http://127.0.0.1:3000/users/,http://127.0.0.1:3000/users/111

3:正则路由,值匹配方式与正则表达式一致,例如:

var express = require('express');
var app = express(); app.get('/ho?l', function(req,res){
res.send('hl,hol');
});
app.get('/ho+l', function(req,res){
res.send('hol,hool,hooool,and so on');
});
app.get('/ho*l', function(req,res){
res.send('hol,holl,hoal,ho1000l,and so on');
});
app.get('/ho(ab)?l', function(req,res){
res.send('hol,habl');
});

4:Route Handler:next()

var express = require('express');
var app = express(); app.get('/a/b', function(req,res,next){
console.log('response will be send by the next function...');
next();
},function(req,res){
res.send('/a/b');
});

注意在next()所在的路由中,不能有输出,要在最后的处理函数中输出,否则后台会输出以下错误内容:

Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (http.js::)
at ServerResponse.header (/home/y/my_note/nodejs/myapp/node_modules/express/lib/response.js::)
at ServerResponse.send (/home/y/my_note/nodejs/myapp/node_modules/express/lib/response.js::)
at fn (/home/y/my_note/nodejs/myapp/node_modules/express/lib/response.js::)
at View.exports.renderFile [as engine] (/home/y/my_note/nodejs/myapp/node_modules/jade/lib/jade.js::)
at View.render (/home/y/my_note/nodejs/myapp/node_modules/express/lib/view.js::)
at Function.app.render (/home/y/my_note/nodejs/myapp/node_modules/express/lib/application.js::)
at ServerResponse.res.render (/home/y/my_note/nodejs/myapp/node_modules/express/lib/response.js::)
at module.exports (/home/y/my_note/nodejs/myapp/app.js::)
at Layer.handle_error (/home/y/my_note/nodejs/myapp/node_modules/express/lib/router/layer.js::)

5:Response Methods

Method Description
res.download() Prompt a file to be downloaded.
res.end() End the response process.
res.json() Send a JSON response.
res.jsonp() Send a JSON response with JSONP support.
res.redirect() Redirect a request.
res.render() Render a view template.
res.send() Send a response of various types.
res.sendFile Send a file as an octet stream.
res.sendStatus() Set the response status code and send its string representation as the response body.

6:app.route()

app.route('/book')
.get(function(req,res){
res.send('get a book');
})
.post(function(req,res){
res.send('add a book');
})
.put(function(req,res){
res.send('update the book');
});

7:Express.Router

app.js

var routes = require('./routes/index');
var users = require('./routes/users');

// view engine setup
  app.set('views', path.join(__dirname, 'views'));
  app.set('view engine', 'jade');


app.use('/', routes);
app.use('/users', users);
index.js
var express = require('express');
var router = express.Router(); /* GET home page. */
router.get('/', function(req, res) {
res.render('index', { title: 'Express!' });
}); module.exports = router;

Express4 Route笔记的更多相关文章

  1. express4.X 笔记

    express是node的web框架,更新频繁,3.X到4.X有了很大的改变.网上的例子,各种版本的都有,为了以后方便,现在重新认真看一遍4.X的API,统一以后的使用方法.在J2EE上落后了,在ex ...

  2. NodeJS学习笔记 - Express4.x路由操作

    一.为Express添加about路由 1.新建js文件,about.js 2.打开about.js,并输入以下代码: var express=require('express'); var rout ...

  3. Asp.net core (学习笔记 路由和语言 route & language)

    https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing?view=aspnetcore-2.1 https://doc ...

  4. Route学习笔记之Area的Route注册

    前一段时间接触了MVC的Area可以将模型.控制器和视图分成各个独立的节点.分区之后,区域路由注册的需求就出来了. 默认的 在MVC项目上右键添加区域之后,在文件夹下会自动添加一个FolderName ...

  5. Thinkphp5笔记八:路由别名Route

    主要作用:隐藏自己的真实路由名称 application/Route.php 使用方法一: <?php use think\Route; Route::alias('home','index/i ...

  6. linux学习笔记31--命令route和routetrace

    Linux系统的route命令用于显示和操作IP路由表(show / manipulate the IP routing table).要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或 ...

  7. linux命令学习笔记(53):route命令

    Linux系统的route命令用于显示和操作IP路由表(show / manipulate the IP routing table).要实现两 个不同的子网之间的通信,需要一台连接两个网络的路由器, ...

  8. Route学习笔记

    前言 UrlRoutingModule.class:这块的代码关联了上一篇中路由部分的一个详细说明 一:Route的讲解 1. 路由模板匹配 添加路由: MapRoute 剔除的路由:IgnoreRo ...

  9. ASP.NET MVC 学习笔记1 Talk about controller & route

    For the sake of learning programming better, I'd like to increase the frequency of using English. So ...

随机推荐

  1. windows 查看文件被哪个进程占用

    经常当我们删除文件时,有时会提示[操作无法完成,因为文件已在另一个程序中打开,请关闭该文件并重试],到底是哪些程序呢? 有时候一个一个找真不是办法,已经被这个问题折磨很久了,今天下决心要把它解决,找到 ...

  2. mysql之事务

    事务处理 begin        开始一个事物 commit        事务确认 rollback    事务回滚 end        事务结束 innodb下可以实现事务 开始执行事务时如果 ...

  3. EF 接收OUTPUT参数的方法 How to Retrieve Stored Procedure Output Parameters in Entity Framework

    原文地址:http://blogs.microsoft.co.il/gilf/2010/05/09/how-to-retrieve-stored-procedure-output-parameters ...

  4. Codeforces Round #FF (Div. 2)__E. DZY Loves Fibonacci Numbers (CF447) 线段树

    http://codeforces.com/contest/447/problem/E 题意: 给定一个数组, m次操作, 1 l r 表示区间修改, 每次 a[i] +  Fibonacci[i-l ...

  5. POJ3729 Facer’s string 后缀数组

                                                                                                      Fa ...

  6. 最最常用的 100 个 Java 类(转)

    大部分的 Java 软件开发都会使用到各种不同的库.近日我们从一万个开源的 Java 项目中进行分析,从中提取出最常用的 Java 类,这些类有来自于 Java 的标准库,也有第三方库.每个类在同一个 ...

  7. Horizontal,vertical,Input_Mouse,Input_Key

    鼠标获取 using UnityEngine; using System.Collections; public class Input_Mouse : MonoBehaviour { void Up ...

  8. android中广播接收SD卡状态

    mReceiver = new BroadcastReceiver() { //add by mengmeng.chen begin public void onReceive(Context con ...

  9. mysql索引简单介绍

    索引从本质上来说也是一种表,这样的表存储被列为索引的列项值和指向真正完整记录的指针.索引对用户透明.仅仅被数据库引擎用来加速检索真实记录.有索引的表.insert和update操作会耗费很多其它时间而 ...

  10. Java基础知识强化67:基本类型包装类之Integer直接赋值的面试题

    1. 面试题: Integer  i = 1: i += 1: 做了哪些事情? (1)其中Integer i =1:做了自动装箱( 使用valueOf()方法,int ---> Integer ...