express基础复习(node.js版)

匿名 (未验证) 提交于 2019-12-03 00:27:02

第一部分,express基础

1,express入门

node.js项目中安装express

npm install express
1.1 配置express设置



1.2 启动express服务器
var express = require('express'); var app = express(); app.listen(80);

2,配置路由

2.1 实现路由

语法:

app.<method>(path,[callback...],callback)

例子:

app.get('/',function(req,res){     res.send("Server Root"); }); app.post('/',function(req,res){     res.send("Save Page"); });
2.2 在路由中应用参数

使用查询字符串:

var express = require("express"); var url  = require('url'); var app = express(); app.get('/find',function(req,res){ 	var url_parts = url.parse(req.url,true); 	var query = url_parse(req.url,true); 	res.send('Finding Book:Author:' + query.author + 'Title: ' + query.title); });

使用正则表达式应用路由参数

app.get(/^\/book\/(\w+)\:(\w+)?$/.function(req,res){ 	res.send('Get Book:Chapter: ' + req.params[0] + 'Page: ' +req.params[1]); });

使用已定义的参数来应用路由参数

app.get('/user/:userid',function(req,res){ 	res.send("Get User: " + req.param("userid")); });

为已定义的参数应用回调函数

app.apram('userid',function(req,res,next,value){ 	console.log("Request with userid: " + value); 	next(); });

3,使用Request对象

HTTPRequest对象的属性和方法如下:

originalUrl,protocol,ip,path,host,method,query,fresh,stale,secure,acceptsCharset(charset),get(header),headers。

4,使用Response对象

4.1 设置标头

相关方法如下:

get(header),set(header,value),set(headerObj),location(path),type(type_string),attachment([filepath])

4.2 设置状态

4.3 发送响应



4.4 发送JSON响应





4.5 发送文件
res.sendfile('arch.jpg', 				{maxAge:1,//24*60*60*1000, 				root:'./views/'}, 			);
4.6 发送下载响应


4.7 重定向响应

5,实现一个模板引擎

var app = express(); app.set('views','./views'); app.set('view engine','jade') app.engine('ejs',require('ejs').__express); app.engine('html',require('ejs').renderFile);

第二部分 express应用

1,了解中间件


  • static:允许express服务器以流式处理静态文件的GET请求。这个中间件是Express内置的,它可以通过express.static()访问。
  • express-logger:实现一个格式化的请求记录器来跟踪对服务器的请求
  • basic-auth-connect:提供对基本的HTTP身份验证的支持。
  • cookie-parser:你可以从请求读取cookie并在响应中设置cookie
  • cookie-session:提供基于cookie的会话支持
  • express-session:提供了一个相当强大的会话实现
  • body-parser:把POST请求正文中的JSON数据解析为req.body属性
  • compression:对发给客户端的大响应提供Gzip压缩支持
  • csurf:提供跨站点请求伪造保护。
1.1 在全局范围内把中间件分配给某个路径
app.use('/',bodyParser());
1.2 把中间件分配到单个路由
app.get('./otherRoute',bodyParser(),function(req,res){ 	res.send('This request was not logged.'); });
1.3 添加多个中间件函数
var express = require("express"); var bodyParser = require('body-parser'); var cookieParser = require('cookie-parser'); var session = require('express-session'); var app = express(); app.use('/',bodyParser()); app.use('/',cookieParser()); app.use('/',session());

2,使用query中间件

var express = require('express'); var app = express(); app.get('/',function(req,res){ 	var id = req.query.id; 	var score = req.query.score; 	console.log(JSON.stringify(req.query)); 	res.send("done"); });

3,提供静态文件服务

语法

express.static(path,[options]);

4,处理POST正文数据

app.post('/',function(req,res){ });

5,发送和接收cookie

cookie-parser中间件语法:

express.cookie-parser([secret])

在响应中设置cookie:

res.cookie(name,value,[options])

代码例子

var express = require("express"); var cookieParser = require('cookie-parser'); var app = express(); app.use(cookieParser()); app.get('/',function(req,res){ 	console.log(req.cookies); 	if(!req.cookies.hasVisited){ 		res.cookie('hasVisited','1', 				{maxAge:60*60*1000, 				 httpOnly:true, 				path:'/'}); 	} 	res.send("Sending Cookie"); }); app.listen(80);

6,实现会话

7,应用基本的HTTP身份验证

var express = require('express'); var basicAuth = require('basic-auth-connect'); var app = express(); app.listen(80); app.use(basicAuth(function(user,pass){ 	return(user === 'testuser' && pass === 'test'); }));

var express = require('express'); var basicAuth = require('basic-auth-connect'); var app = express(); app.listen(80); var auth = basicAuth(function(user,pass){ 	return(user === 'testuser' && pass === 'test'); }); app.get('/restricted',auth,function(req,res){ 	res.send('Welcome to the restricted section.'); });

8 实现会话身份验证


  • regenerate([callback]):移除并创建一个新的req.session对象,让你重置会话
  • destroy([callback]):移除req.session对象
  • save([callback]):保存会话数据
  • touch([callback]):为会话cookie重置maxAge计数
  • cookie:指定把会话链接到浏览器的cookie对象
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!