express 涉及中间件

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_44195250/article/details/96501341

express
1.创建方式

(1)导入express模块

var express=require('express');

(2) 调用方法,返回app

var app=express();

(3)端口监听 最后执行

app.listen(55555);//异步

2.定义方式
根据不同的客户端请求,返回不同的响应
3.app上的方法(app本质:请求监听函数)

get

app.get('/',function (req, res) {//客户端通过get方发访问路由上的时候,会交由对应的回调函数处理
res.end('首页')
});


head
delete
post
put
app.all(‘*’)匹配所有的方法名 匹配所有路径
app.all('*',function (req, res) {
res.end('此页面不存在')
});

4.详细信息的获取

原理:
var urlObj=require(‘url’).parse(req.url,true);
req.path=urlObj.path;
req.query=urlObj.query;

req.method 请求方法
req.url 请求URL
req.path 请求路径// pathname /food
req.header 请求头对象
req.query 获取查询字符串
req.params 获取请求URL中的参数值

var express=require('express');
var app=express();
app.get('/users/:id',function (req, res) {
var values=res.headers.host.split(':');
console.log(values[0]);
console.log(values[1]||80);
console.log(res.headers.host);
res.end('ok');
});
app.listen('8787',function () {
console.log('8787');
});

5.中间件

中间件都是函数,都需要调用,是为了传参(需要参数的原因:灵活传参 不用固定)
(1.)使用

var express=require('express');
var app=express();
app.use(function (req,res) {});
app.listen(3200);

(2)参数
参数1:req
参数2:res
参数3:next -》函数 调用表示继续向下执行
(3)特点

一般放在路由之前
可能有异步代码
解决方式
通过setTimeOut(function(){
  next() //等异步执行完执行next()
})

(4)作用
添加公共处理器
给请求或响应对象上增加公有的方法和属性 req.path
(5)乱码处理

app.use(function (req,res,next) {
res.setHeader('content-type','text/plain;charset=utf8');//dbf 是乱码
setTimeout(function () {
    next();
});
});

6.路由中间件

根据不同请求实现不同的功能
根据不同的路径请求开头分别交由各自所属范围进行执行
引用 创建 执行 发送

user.js
 var express=require('express');
 var router=express.Router();
 router.get('/signup',function(req,res){})
 module.exports=router

路由中间件部分

var express=require('express');
var app=express();
var user=require('./router/user');
var article=require('./router/article');
/*用户  /user/sginup    */
/*当请求的URL路径是以user开头的话,会交由 */
app.use('/user',user);
app.use('/article',article);
app.listen(7979);

7.send( )

特点:对传入的数据没有格式限制 
当参数为一个String时,Content­Type默认设置为”text/html” 
当参数为Array或Object时,Express会返回一个JSON 
当参数为一个Number时,并且没有上面提到的任何一条在响应体里,Express会帮你 
设置一个响应体,比如:200会返回字符”OK”

猜你喜欢

转载自blog.csdn.net/weixin_44195250/article/details/96501341