1.搭建第一个koa程序

  1. const Koa = require('koa')
  2. const app = new Koa()
  3. app.use((ctx) => {
  4. ctx.body = "ok"
  5. })
  6. app.listen(3000)

2.中间件与洋葱模型

中间件使用时,遇到await next() 时会先进入内层的中间件,执行完之后再出来上一层继续执行

  1. app.use(async (ctx, next) => {
  2. console.log(1)
  3. await next()
  4. console.log(2)
  5. ctx.body = "ok"
  6. })
  7. app.use(async (ctx, next) => {
  8. console.log(3)
  9. await next()
  10. console.log(4)
  11. })
  12. app.use(async (ctx, next) => {
  13. console.log(5)
  14. await next()
  15. console.log(6)
  16. })
  17. // 打印:1,3,5,6,4,2
  18. app.listen(3000)

3.使用koa-router

  1. 安装

    1. npm i koa-router --save
  2. 使用 ```javascript const Router = require(‘koa-router’) const app = new Koa() const router = new Router() router.get(‘/‘, ctx => { ctx.body = ‘这是主页’ })

app.use(router.routes())

  1. 3.配置子路由前缀
  2. ```javascript
  3. // 配置 user router
  4. const usersRouter = new Router({ prefix: '/users' })
  5. usersRouter.get('/', ctx => {
  6. ctx.body = 'user list'
  7. })
  8. app.use(usersRouter.routes())

4.HTTP options 方法的作用是什么

  1. 检测服务器所支持的请求方法

options请求返回的响应头存在一个allow字段,其中包括允许诸如get, post等请求

  1. CORS 中的预检请求,检查是否支持跨域

5.使用 allowedMethods

作用:

  1. 实现options请求,返回允许的 methods
  2. 不允许(405),支持这个方法但代码中还没写这个接口
  3. 不支持(501),例如Link方法,koa不支持这个方法,写了这个接口也没用
    1. app.use(usersRouter.allowedMethods())

6.RESTful API 的最佳

  • 新增:post
  • 删除:delete
  • 查找:get
  • 修改:put

    7.解析请求体 koa-body-parser

  1. 安装 npm i koa-body-parser -S
  2. 使用 ```javascript const bodyParser = require(‘koa-body-parser’) app.use(bodyParser())

usersRouter.post(‘/‘, ctx => { console.log(ctx.request.body) ctx.body = ‘create user’ })

  1. <a name="SC7xK"></a>
  2. ### 8.设置http请求响应
  3. 1. 设置 status
  4. 1. 设置 body
  5. 1. 设置 响应头
  6. ```javascript
  7. ctx.set('Allow', 'GET, POST')