Koa入门

作者: 忽如寄 | 来源:发表于2017-04-18 00:51 被阅读798次

    Koa框架由Express的原班人马打造,主要是通过组合不同的generator来避免重复繁琐的回调函数嵌套。

    安装方法如下

    npm install koa -g
    

    一个简单的koa应用

    const koa = require('koa');
    const app = new koa();
    
    app.use(ctx => {
      ctx.body = 'hello world';
    });
    
    app.listen(3000);
    

    启动应用就可以在本地的3000端口看到一个最简单的web应用。

    常用方法

    app.listen():启动一个服务的快捷方法,其实是作为原生http.createServer()方法的简单封装,实际上运行如下:

    const http = require('http');
    const koa = require('koa');
    const app = koa();
    
    http.createServer(app.callback()).listen(3000);
    

    当然你可以一次启动多个服务。

    app.use(function):将给定的函数作为中间件加载

    Koa将req和res对象封装成了一个ctx上下文对象,可以通过ctx.request和ctx.response对象访问相应的方法和属性,如下:

    ctx.request ctx.response

    ctx上下文对象中的api:
    ctx.req:node.js中的request对象
    ctx.res:node.js中的response对象
    ctx.app:app实例
    ctx.state:命名空间
    ctx.cookies.get(name,[options]):返回相应的cookie
    ctx.cookies.set(name,value,[options]):设置新的cookie,相应的option参数有:

    {
      signed: Boolean,
      expires: Date,
      path: String,默认为'/',
      domain: String,
      secure: Boolean,
      httpOnly: Boolean,默认为true
    }
    

    ctx.throw(msg, [status]):抛出错误的辅助方法,默认status为500
    ctx.assert(value, [msg], [status], [properties]):用来断言的辅助方法

    Request对象API

    req.header:返回请求头
    req.method:返回请求方法
    req.method=:设置
    req.length:返回conten-length
    req.url:返回请求url
    req.url=:设置
    req.path:返回path
    req.path=:设置
    req.querystring:返回查询字符串,去除头部的?
    req.querystring=:设置
    req.search:返回查询字符串,包含?
    req.search=:设置
    req.host:返回主机名
    req.type:返回content-type
    req.query:返回经过解析的查询字符串,就是一个对象,类似于Express的req.query,不存在返回空对象
    req.query=:设置
    req.fresh:检查客户端请求的缓存是否最新,当缓存为最新时,可编写业务逻辑返回304
    req.stale:与rea.fresh相反
    req.protocol:返回请求协议名
    req.secure:判断协议是否为https
    req.ip:返回请求IP
    req.ips:返回请求IP列表
    req.subdomains:返回子域名数组,如当请求域名为 "tobi.ferrets.example.com" 时候,返回 ["ferrets", "tobi"]
    req.is(type):判断请求对象中的content-type是否为给定type的快捷方法
    req.accepts(type):判断请求对象中 Accept 是否为给定 type 的快捷方法,当匹配到符合的类型时,返回最匹配的类型,否则返回 false
    req.acceptsEncodings(encodings):判断客户端是否接受给定的编码方式的快捷方法
    req.acceptsCharsets(charsets):同req.acceptsEncodings(encodings)
    req.acceptsLanguages(langs):同req.acceptsEncodings(encodings)

    Response对象的API

    res.header:获取返回头
    res.status:获取返回的HTTP状态码
    res.status=:设置
    res.length:返回content-length属性
    res.length=:设置
    res.body:获取响应体
    res.body=:设置
    res.get(field):获取相应的返回头属性
    res.set(field, value):设置
    set.set(fields):一次设置多个,参数为对象
    res.remove(fields):删除指定的返回头属性
    res.type:获取返回的content-type
    res.type=:设置
    res.redirect(url,[alt]):重定向,可以使用关键字back返回上一个页面(refer),没有refer时,返回/
    res.attachment:返回熟悉 Content-Disposition 为 "attachment",并告知客户端进行下载。
    res.headerSent:判断一个响应头是否已经发送到客户端,通常用来检测客户端是否收到了错误信息。
    res.lastModified:返回last-modified属性
    res.lastModified=:设置
    res.etag=:设置etag

    相关文章

      网友评论

          本文标题:Koa入门

          本文链接:https://www.haomeiwen.com/subject/tzvxzttx.html