浅谈Node.js轻量级Web框架Express4.x使用指南(2)

//app.js var express = require('express'); var app = express(); app.use(function(req, res, next){ if(req.url == 'https://www.jb51.net/'){ res.end('<h1>Express</h1>'); }else{ next(); } }); app.use(function(req, res, next){ if(req.url == '/demo'){ res.end('<h1>Demo</h1>'); }else{ next(); } }); app.use(function(req, res, next){ res.end('<h1>404<h1>'); }); app.listen(3000);

请求与响应

上面express中每一个回调函数都不可缺少req和res参数

重要性可见一斑

常见的req与res中的属性/方法如下(原生node.js的req、res属性/方法也可以使用)

Request对象:

API 含义
req.app   当callback为外部文件时,用于访问express的实例  
req.baseUrl   获取路由当前安装的URL路径  
req.body/cookies   获得「请求主体」/ Cookies  
req.fresh/stale   判断请求是否还「新鲜」  
req.hostname/ip   获取主机名和IP地址  
req.originalUrl   获取原始请求URL  
req.params   获取路由的parameters  
req.path   获取请求路径  
req.protocol   获取协议类型  
req.query   获取URL的查询参数串  
req.route   获取当前匹配的路由  
req.subdomains   获取子域名  
req.acceptsCharsets   返回指定字符集的第一个可接受字符编码  
req.acceptsEncodings   返回指定字符集的第一个可接受字符编码  
req.acceptsLanguages   返回指定字符集的第一个可接受字符编码  
req.accepts()   检查可接受的请求的文档类型  
req.get()   获取指定的HTTP请求头  
req.is()   判断请求头Content-Type的MIME类型  

Response对象:

API 含义
res.app   同req.app  
res.append()   追加指定HTTP头  
res.set()   在res.append()后将重置之前设置的头  
res.cookie()   设置Cookie  
res.clearCookie()   清除Cookie  
res.download()   传送指定路径的文件  
res.get()   返回指定的HTTP头  
res.json()   传送JSON响应  
res.jsonp()   传送JSONP响应  
res.location()   只设置响应的Location HTTP头,不设置状态码或者close response  
res.redirect()   设置响应的Location HTTP头,并且设置状态码302  
res.send()   传送HTTP响应  
res.sendFile()   传送指定路径的文件 -会自动根据文件extension设定Content-Type  
res.set()   设置HTTP头,传入object可以一次设置多个头  
res.status()   设置HTTP状态码  
res.type()   设置Content-Type的MIME类型  

挑一些重点

req.query

req.query可以获取请求路径参数的对象

向服务器发送请求 :3000/?user=tester&pass[a]=123&pass[b]=456

//app.js var express = require('express'); var app = express(); app.get('https://www.jb51.net/', function(req, res, next){ console.log(req.query); console.log(req.query.user); //tester console.log(req.query.pass.a); //123 console.log(req.query.pass.b); //456 res.end(); }); app.listen(3000);

req.params

req.params可以解析复杂路由规则上的属性
(req.param综合了req.query和req.param的功能,但是被移除了不要使用)

向服务器发送请求 :3000/123456

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wypyjj.html