day24

1-说明 http express 和 koa 的路由参数分别怎么获取2-简单说明动态路由
  http:
    get:url.parse(req.url,true).query
    post:
      var queryString=require('queryString')
      var bodyParse=''
      req.on('data',(params)=>{
        bodyParse+=params
      })
      
      req.on('end',(params)=>{
        let {name}=queryString.parse(bodyParse)
        res.end(name)
      })
  express:
      get:
        req.query.xxx
      post:
        var bodyParser=require('body-parser')
        app.use(bodyParser.urlencoded({extends:false}))
        app.post('/add',(req,res)=>{
          let {name}=req.body
          res.send(name)
        })
  koa:
    get:
      ctx.query.xxx
    post:
      var bodyParser=require('body-parser')
      app.use(bodyParser())
      ctx.request.body.xxx
3-说明 express 和 koa 的中间件的使用
  写next()程序未执行玩继续往下执行,未写则程序停止执行
4-简述 koa 的洋葱圈模型
  
const Koa = require('koa');
const app = new Koa();

// x-response-time
app.use(async (ctx, next) => {
const start = new Date();
await next();
const ms = new Date() - start;
ctx.set('X-Response-Time', `${ms}ms`);
});

// logger
app.use(async (ctx, next) => {
const start = new Date();
await next();
const ms = new Date() - start;
console.log(`${ctx.method} ${ctx.url} - ${ms}`);
});

// response
app.use(ctx => {
ctx.body = 'Hello World';
});

app.listen(3000,()=>{
  console.log('服务器以启动,端口正在监听中...')
});
5-扩展:了解 websocket
首先,Websocket是一个持久化的协议,相对于HTTP这种非持久的协议来说。简单的举个例子吧,用目前应用比较广泛的PHP生命周期来解释。

HTTP的生命周期通过 Request 来界定,也就是一个 Request 一个 Response ,那么在 HTTP1.0 中,这次HTTP请求就结束了。

在HTTP1.1中进行了改进,使得有一个keep-alive,也就是说,在一个HTTP连接中,可以发送多个Request,接收多个Response。但是请记住 Request = Response , 在HTTP中永远是这样,也就是说一个request只能有一个response。而且这个response也是被动的,不能主动发起。

教练,你BB了这么多,跟Websocket有什么关系呢?_(:з」∠)_好吧,我正准备说Websocket呢。。

首先Websocket是基于HTTP协议的,或者说借用了HTTP的协议来完成一部分握手。

首先我们来看个典型的 Websocket 握手(借用Wikipedia的。。)

GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
Origin: http://example.com
熟悉HTTP的童鞋可能发现了,这段类似HTTP协议的握手请求中,多了几个东西。我会顺便讲解下作用。

Upgrade: websocket
Connection: Upgrade
这个就是Websocket的核心了,告诉 Apache 、 Nginx 等服务器:注意啦,我发起的是Websocket协议,快点帮我找到对应的助理处理~不是那个老土的HTTP。

Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
首先, Sec-WebSocket-Key 是一个 Base64 encode 的值,这个是浏览器随机生成的,告诉服务器:泥煤,不要忽悠窝,我要验证尼是不是真的是Websocket助理。

上一篇:day24,python习题


下一篇:【机试备考】Day24-first集 | map、set插入遍历