一、安装,配置
npm install express
二、接收请求
1.创建服务
var express = require("express");
2.监听
server.listsen(8080);
3.处理请求
server.use('地址',function(req,res{}))
var express = require("express");
var server = express;
server.use("/a.html",function(req,res){
res.send("abc");
res.end();
});
server.listsen(8080);
express保留了原生的功能,添加了一些方法,增强原有的功能。例如:res.send()
就增强了write的功能,write不能发送json串。
- 3种方法接受请求
.get('/',function(req,res){})
.post('/',function(req,res){})
.use('/',function(req,res){})//get post都可以
- express依赖于中间件
三、中间件
- 简单说,中间件(middleware)就是处理HTTP请求的函数。它最大的特点就是,一个中间件处理完,再传递给下一个中间件。每个中间件可以从实例,接收三个参数,依次为request对象(代表HTTP请求)、response对象(代表HTTP回应),next回调函数(代表下一个中间件)。每个中间件都可以对HTTP请求(request对象)进行加工,并且决定是否调用next方法,将request对象再传给下一个中间件。
- 一个不进行任何操作、只传递 request 对象的中间件,就是下面这样
function Use(req, res, next) {
next();
}
- 如果它带有参数,则代表抛出一个错误,参数为错误文本。抛出错误以后,后面的中间件将不再执行,直到发现一个错误处理函数为止。
function Use(req, res, next) {
next("Error");
}
- 链式操作
server.use('/',function(req,res,next){//链式操作需要加上第三个参数
console.log('a');
next();//调用后才真正被链起来
});
server.use('/',function(req,res){
console.log('b');
})
- 使用前,需要在命令窗口
cnpm install express-static
下载中间件;(这里用express-static举例)
const express = require('express');
const expressStatic = require('express-static');
var server = express();
server.listen(8080);
server.use(expressStatic('./静态文件所在目录')); //expressStatic相当于一个函数
数据:GET POST
- GET:无需中间件 数据存在 req.query 中
- POST:需要
body-parser
中间件,用法如下
const express=require('express');
const bodyParser=require('body-parser');
var server=express();
server.use(bodyParser.urlencoded({}));//解析post数据,将其放到req.body
server.use(function(req,res){
console.log(req.body);
});
//另外,bodyParser.urlencoded可以有参数
server.use(bodyParser.urlencoded({
extended,默认false ,设置为true时应用扩展模式//扩展模式
limit;//限制POST数据大小 1024=1k,1024*1024=1M,1024*1024*1024=1G
}));
- body-parser模拟实现,并不如bodyparser
const express=require('express');
const querystring=require('querystring');
var server=express();
server.listen(8080);
server.use(function(req,res,next){
var srt="";
req.on('data',function(data){
str+=data;
});
req.on('end',function(){
req.body=querystring.parse(str);
next();
})
});
server.use('/',function(req,res){
console.log(req.body);
});
- 写成自己的中间件
const express=require('express');
const body=require('./my-borderparser');//引用自己的模块
var server=express();
server.use(body);
/*自己写my-bodyparser*/
const querystring=require('querystring');
module.export=(function(){
return function(req,res,next){
var srt="";
req.on('data',function(data){
str+=data;
});
req.on('end',function(){
req.body=querystring.parse(str);
next();
});
};
}
- express写简易注册登录(js 部分如下)
const express = require('express');
const expressStatic = require('express-static');
var server = express();
var users={
blue:"123",
mike:"7878"
}
server.listen(8080);
server.get('/login',function(req,res){
var user = req.query('user');
var pass = req.query('pass');
if(users[user]==null){
res.send({ok:false,msg:'用户不存在'});
}else{
if(users[user]!=pass){
res.send({ok:false,msg:'密码错误'});
}else{
res.send({ok:true,msg:'成功'});
}
}
});
server.use(expressStatic('./www'));