app.xxx

文档https://koajs.com/#application

  • app,env 获取环境变量
  • app.proxy 获取代理
  • app.suddomainOffset
  • app.listen() 开始监听一个端口
  • app.callback()
  • app.use() 插入中间件
  • app.keys 用于加密
  • app.context 上下文
  • app.on(‘error’,fn) 监听错误
  • app.emit 触发事件

ctx.xxx

https://koajs.com/#context

  • ctx.req //Node.js封装的请求 IncomingMessage
  • ctx.res
  • ctx.request //Koa封装的请求
  • ctx.response
  • ctx.state 跨中间件分享数据
  • ctx.app
  • ctx.cookies.get/set
  • ctx.throw 抛出错误
  • ctx.assert 断言
  • ctx.respond 不推荐使用

委托

Request委托 & Response委托
委托:我自己不想做,让别人做
ctx.body === ctx.response.body
ctx就是response的委托。

ctx.request.xxx

  • request.header
  • request.method 请求方法
  • request.url
  • request.href
  • request.pat 请求路径
  • request.host
  • request.hostname
  • request.query 查询参数
  • request.idempotent
    • 幂等
    • get同一个文件,get一个和多次是没有区别的,不管执行多少次,结果都是一样的 就是幂等
    • 其任意多次执行所产生的影响均与一次执行的影响相同。
  • request.get(field)

ctx.response.xxx

https://koajs.com/#response

  • response.status 设置状态码
  • response.body * 5 五种不同得类型 // string, buffer ,stream ,json(object || array), null
  • response.set() *2 设置响应头 key:value 或 对象
  • response.append() 添加一个响应头 //可以添加重复得响应头。set会覆盖
  • response.get() 获取响应头