express的初步了解使用

express的使用

1:简介

Express是一个简洁而灵活node.js web应用框架,用来创建各种web应用,利用express可以搭建一个网站

Express框架核心功能:

  • 设置中间件响应HTTP请求
  • 设置路由执行不同的HTTP请求
  • 可以通过向模板传递参数动态渲染页面

2: express安装

  • npm install express --save
  • npm install body-parser --save:nodejs中间件,用于处理url、json、text以及raw等编码数据
  • npm install cookie-parser --save:解析cookie的工具,通过req.cookies,可以取到传过来的cookie,并把它们转成对象
  • npm install multer --save:用于处理enctype="multipart/form-data"的表单数据

3:利用express起一个node服务

var express = require("express");
var app = express();
app.get("/",function(req,res){
res.send("第一个 Express 框架实例");
});
var server = app.listen(8081);
console.log("执行http://127.0.0.1:"+server.address().port)

34:请求和响应

Request对象,表示http请求,包含了请求查询字符串,参数,内容,http头部信息,常见属性:

  • req.app:当callback为外部文件时候,用req.app访问express实例
  • req.baseUrl:获取路由当前安装的URL路径
  • req.body / req.cookies:获得「请求主体」/ Cookies
  • req.fresh / req.stale:判断请求是否还「新鲜」
  • req.hostname / req.ip:获取主机名和IP地址
  • req.originalUrl:获取原始请求URL
  • req.params:获取路由的parameters
  • req.path:获取请求路径
  • req.protocol:获取协议类型
  • req.query:获取URL的查询参数串
  • req.subdomains:获取子域名
  • req.accpets():检查请求的Accept头的请求类型
  • req.acceptsCharsets / req.acceptsEncodings / req.acceptsLanguages
  • req.get():获取指定的HTTP请求头
  • req.is():判断请求头Content-Type的MIME类型

Response对象,表示http响应,在接收到请求后向客户端发送的http响应数据,常见属性:

  • res.app:同req.app一样
  • res.append():追加指定HTTP头
  • res.set()在res.append()后将重置之前设置的头
  • res.cookie(name,value [,option]):设置Cookie
  • opition: domain / expires / httpOnly / maxAge / path / secure / signed
  • res.clearCookie():清除Cookie
  • res.download():传送指定路径的文件
  • res.get():返回指定的HTTP头
  • res.json():传送JSON响应
  • res.location():只设置响应的Location HTTP头,不设置状态码或者close response
  • res.redirect():设置响应的Location HTTP头,并且设置状态码302
  • res.send():传送HTTP响应
  • res.sendFile(path [,options] [,fn]):传送指定路径的文件 -会自动根据文件extension设定Content-Type
  • res.set():设置HTTP头,传入object可以一次设置多个头
  • res.status():设置HTTP状态码
  • res.type():设置Content-Type的MIME类型

5:路由:

路由决定了由谁(指定脚本)去响应客户端请求。

在HTTP请求中,我们可以通过路由提取出请求的URL以及GET/POST参数。

6:静态文件

express.static("public")

以下几个示例需要使用一个server

var express = require("express");
var fs = require("fs");
var bodyParser = require("body-parser");
var cookieParser = require("cookie-parser");
var multer = require("multer");
var app = express();
/静态资源/
app.use(express.static("public"));
/post请求需要创建application/x-www-form-urlencoded解析/
var urlencodedParser = bodyParser.urlencoded({extended:false});
/文件上传/
app.use(multer({ dest: '/tmp/'}).array('image'));
/使用cookie/
app.use(cookieParser());

app.get("/",function(req,res){
console.log("Cookies: ", req.cookies)
res.send("第一个 Express 框架实例");
});
app.get('/abcd', function(req, res) {
console.log("/ab
cd GET 请求");
res.send('正则匹配');
});

app.get("/list",function(req,res){
//console.log(req.app)
console.log("req.hostname:",req.hostname)
console.log("req.ip:",req.ip)
console.log("req.originalUrl:",req.originalUrl)
console.log("req.params:",req.params)
console.log("req.path:",req.path)
console.log("req.protocol:",req.protocol)
console.log("req.query:",req.query)
console.log("req.route:",req.route)
console.log("req.subdomains:",req.subdomains)
console.log("req.get:",req.get)
res.send("list");
});

app.get("/index",function(req,res){
console.log("index请求");
console.log("__dirname:",__dirname);
res.sendFile(__dirname+"/index.html")
});
app.get("/process_get",function(req,res){
console.log("process_get请求");
var info = {
getname:req.query.getname,
getage:req.query.getage
};
res.send(JSON.stringify(info))
});
app.post("/process_post",urlencodedParser,function(req,res){
console.log("process_post请求");
var info = {
postname:req.body.postname,
postage:req.body.postage
};
res.send(JSON.stringify(info))
});
app.post("/file_upload",function(req,res){
var des_file = __dirname+"/"+req.files[0].originalname;
console.log(req.files[0]);
console.log(__dirname)
console.log(des_file);

fs.readFile(req.files[0].path,function(err,data){
if(err) return console.log(err);
fs.writeFile(des_file,data,function(err){
if(err) return console.log(err);
info = {
meg:"file upload success!",
filename:req.files[0].originalname
}
res.end( JSON.stringify( info ) );
})
});

});
var server = app.listen(8082);
console.log("执行http://127.0.0.1:"+server.address().port)

7:GET方法





8:POST方法

  • post请求需要创建application/x-www-form-urlencoded解析
  • var bodyParser = require("body-parser")
  • var urlencodedParser = bodyParser.urlencoded({extended:false})

代码:





9:文件上传




10:Cookie管理

posted on 2016-05-10 14:58  借个火点烟  阅读(718)  评论(0)    收藏  举报