egg教程系列之二:get和post请求

222 阅读1分钟

一:创建一个get请求

1、添加路由

//router.js
router.get('/getGirl', controller.home.getGirl);

2、创建控制器

//home.js中
  async getGirl(){
    const ctx=this.ctx
    ctx.body=ctx.query
  }

浏览器地址栏访问 url/getGirl?name=小红&age=18 后,可以看到浏览器输出了

{"name":"张三","age":"18"}

二:params路由

1、添加路由

//router.js
router.get('/getGirl/name', controller.home.getGirl);

2、创建控制器

//home.js中
  async getGirl(){
    const ctx=this.ctx
    ctx.body=ctx.params
  }

浏览器地址栏访问 url/getGirl/小红 后,可以看到浏览器输出了

{"name":"张三"}

params和query的区别

  • 1、传递方式不同:param参数在url问号之前,
  • 2、获取方式不同:params 是通过ctx.params,query是通过ctx.query获取

三:post请求

1、添加路由

//router.js
router.post('/addGirl', controller.home.addGirl);

2、创建控制器

//home.js中
  async addGirl(){
    const ctx=this.ctx
    ctx.body=ctx.request.body
  }

3、解除csrf限制

egg默认是不允许直接post的json访问,需要放开限制才可以

//config.default.js
 // csrf 正式环境一定要关闭
  config.security= {
    csrf: {
      ignoreJSON: true, // 默认为 false,当设置为 true 时,将会放过所有 content-type 为 `application/json` 的请求
    },
  }

可以下载个postman或者apifox发post请求,以json的形式发送,可以看到你发送的所有参数全部被返回了

{"name":"张三"}

egg相对来说比nestjs简单些,单说一点它自动引入了大量的东西,像body,query,params等都是直接拿来用,nestjs什么东西都要手动引入,比egg更加灵活强大,这或许也是nestjs火的原因吧。 如果你是node新人,看到这篇文章,请果断转nestjs,虽然那个学习曲线有点陡峭。。