码迷,mamicode.com
首页 > 其他好文 > 详细

5. 控制器

时间:2019-10-20 01:06:43      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:spl   解析   stat   ams   业务   常量   Koa   efi   参数   

1. 控制器的作用

 1. 处理HTTP请求

 2. 处理业务逻辑

 3. 发送HTTP响应

 

2. 编写控制器的最佳实践

 每个资源的控制器放在不同的文件里

 最好使用类+类方法的形式编写控制器

 严谨的错误处理

 

3. 获取Http请求参数

 1. 获取body中的参数

  koa默认是不支持查看body中的参数, 所以我们需要安装koa-bodyparser中间件来解析body请求体

  npm i koa-bodyparser --save

 

  之后, 我们便可以获取body参数

  ctx.request.body

 

  2.  获取header

    ctx.request.header

 

  3.   获取query

   (/users/zhanghao?age=12)  query为?后面的内容

   ctx.query

 

  4. 获取路由参数(router params)

   /users/zhanghao zhanghao为路由参数

   ctx.params

 

4.   发送HTTP响应

   1. 设置status

     ctx.status = 204

 

  2. 设置body

    ctx.body = ‘‘ "

 

5 模拟数据库重构增删改查代码

   在这里, 我们设置一个常量db模拟数据库

const Koa = require(‘koa‘)
const Router = require(‘koa-router‘)
const body = require(‘koa-bodyparser‘)

const app = new Koa()
const router = new Router()
//y路由前缀
const usersRouter = new Router({prefix: ‘/users‘})
app.use(body())

//模拟数据库
const db = [
  {name : "李雷"},
  {name : "朱丑"}
]

router.get(‘/‘, (ctx) => {
  ctx.body = "这是主页"
})

usersRouter.get(‘/‘, (ctx) => {
  ctx.body = db
})

usersRouter.post(‘/‘, (ctx) => {
  //向db中添加元素
  db.push(ctx.request.body)
  ctx.body = ctx.request.body
})

usersRouter.get(‘/:id‘, (ctx) => {
  //这里默认id是数组的索引
  ctx.body = db[ctx.params.id]
})

usersRouter.delete(‘/:id‘, (ctx) => {
  //从第id项删除, 删除一项
  db.splice(ctx.params.id, 1)
  ctx.status = 204
})

usersRouter.put(‘/:id‘, (ctx) => {
  db[ctx.params.id] = ctx.request.body
  ctx.body = ctx.request.body
})

app.use(router.routes())
app.use(usersRouter.routes())

app.listen(3003)

  注意: 使用koa-bodyparser的方法,需要加()

  

 

 

  

5. 控制器

标签:spl   解析   stat   ams   业务   常量   Koa   efi   参数   

原文地址:https://www.cnblogs.com/zhanghaoblog/p/11706318.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!