Express4 Route笔记
可以参考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笔记的更多相关文章
- express4.X 笔记
express是node的web框架,更新频繁,3.X到4.X有了很大的改变.网上的例子,各种版本的都有,为了以后方便,现在重新认真看一遍4.X的API,统一以后的使用方法.在J2EE上落后了,在ex ...
- NodeJS学习笔记 - Express4.x路由操作
一.为Express添加about路由 1.新建js文件,about.js 2.打开about.js,并输入以下代码: var express=require('express'); var rout ...
- Asp.net core (学习笔记 路由和语言 route & language)
https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing?view=aspnetcore-2.1 https://doc ...
- Route学习笔记之Area的Route注册
前一段时间接触了MVC的Area可以将模型.控制器和视图分成各个独立的节点.分区之后,区域路由注册的需求就出来了. 默认的 在MVC项目上右键添加区域之后,在文件夹下会自动添加一个FolderName ...
- Thinkphp5笔记八:路由别名Route
主要作用:隐藏自己的真实路由名称 application/Route.php 使用方法一: <?php use think\Route; Route::alias('home','index/i ...
- linux学习笔记31--命令route和routetrace
Linux系统的route命令用于显示和操作IP路由表(show / manipulate the IP routing table).要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或 ...
- linux命令学习笔记(53):route命令
Linux系统的route命令用于显示和操作IP路由表(show / manipulate the IP routing table).要实现两 个不同的子网之间的通信,需要一台连接两个网络的路由器, ...
- Route学习笔记
前言 UrlRoutingModule.class:这块的代码关联了上一篇中路由部分的一个详细说明 一:Route的讲解 1. 路由模板匹配 添加路由: MapRoute 剔除的路由:IgnoreRo ...
- 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 ...
随机推荐
- BZOJ1639: [Usaco2007 Mar]Monthly Expense 月度开支
1639: [Usaco2007 Mar]Monthly Expense 月度开支 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 529 Solved: ...
- 【转】[c/c++ ]字节序与大小端转换--不错
原文网址:http://blog.csdn.net/kuai0705/article/details/20841133 注明: 以下内容均为学习内容整理,记录,便于自己学习,并非完全意义上的自产,如有 ...
- 【转】listView中,checkBox的显示和隐藏
原文网址:http://www.cnblogs.com/vicma/p/3460500.html 在listView中,每个item都有一个ChexBox,当显示的时候在listView外面设置一个按 ...
- 使用ant自动编译安卓项目并签名
准备阶段: 1.下载ant,jdk,android sdk ant下载地址:ant.apache.org/bindownload.cgi 2. 设置环境变量 ANT_HO ...
- BZOJ2038: [2009国家集训队]小Z的袜子(hose) -- 莫队算法 ,,分块
2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 3577 Solved: 1652[Subm ...
- python+mysql数据库的简单操作
最近接了一个任务,测试某项类似于收益情况报表的功能,因计算公式复杂,单纯手算过于复杂,所以想到写成脚本 根据python的分治原则,先整了几个函数用于实现计算逻辑,后发现数据输入过于繁琐,所以决定使用 ...
- Github开源Java项目(Disconf)上传到Maven Central Repository方法详细介绍
最近我做了一个开源项目 Disconf:Distributed Configuration Management Platform(分布式配置管理平台) ,简单来说,就是为所有业务平台系统管理配置文件 ...
- Adobe Photoshop CC 2015安装激活
分享一下Adobe Photoshop CC 2015 安装激活步骤 工具/原料 xf-adobecc2015.exe Adobe Photoshop CC 2015官方原版 方法/步骤 1 ...
- AngularJS和ReactJS对比
Angular的特点: 优势: AngularJS是一套完整的框架,angular有自带的数据绑定.render渲染.angularUI库,过滤器,$filter,$directive(模板),$se ...
- Eclipse中如何安装和使用GrepCode插件
GrepCode(GC)Eclipse插件允许Eclipse用户在Eclipse IDE中搜索由GrepCode提供的工厂类.本教程介绍如何安装和使用插件.使用Eclipse3.5(Galileo)的 ...