body-parser 解析 post数据

req.body

用req.body获取post数据,需要装body-parser中间件 ,详情参考路由中间件

所对应的url长这个样子http://localhost:3000/user/add

发送给服务器的内容为{username:'xiaoming',age:20}

const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
用了这俩之后,可以使用req.body
router.post('/add', (req, res) => {
  res.send({
    code: 1,
    message: '数据获取成功',
    data: req.body //需要装第三方中间件,body-parser
  })
})
req.body.username      //输出xiaoming

🌰子:

路由中间件

app.js

const express = require('express');
const bodyParser = require('body-parser');
const userRouter = require('./user');
const app = express();


app.use('/static', express.static('files'))

app.use(function (req, res, next) {
  console.log('application middleware ..')
  next();
})

//extended: false 表示是否使用系统模块 querystring ,官方推荐
//extended: true 使用第三方qs来处理
app.use(bodyParser.json()) 								 //创建application / json解析器
															解析application / json请求体
app.use(bodyParser.urlencoded({ extended: false }))      //创建application/ x-www-form-																	urlencoded解析器
                                 						(生成得脚手架中有																app.use(express.json());
									app.use(express.urlencoded({ extended: false }));)
									和这个bodyParser是他同样得作用所以就不用在装bodyParser了。
									
									
app.use('/user', userRouter)

//错误优先的原则
app.use(function (err, req, res, next) {
  console.log(err.stack);
  res.status(200).send('somting is wrong!')
})

app.listen(3000, () => {
  console.log('localhost start 3000 ...')
})

user.js

const express = require('express');

var router = express.Router();

//针对urser下所有的路由接口
router.use(function (req, res, next) {
  //获取传过来的用户信息
  //let username = req.body.username;
  //从数据库查询
  //let rs = db.getUserinfo(uername)
  // if(rs){next()}
  // else {
  //   res.send('用户不存在')
  // }
  console.log('权限验证')
  next();
})

//针对user下 /:id 的接口做权限验证
router.use('/:id', function (req, res, next) {                      //router.use
  console.log('id 权限验证')
  next();
})

//http://localhost:3000/user/10
// router.get("/:id", function (req, res) {
//   console.log(req.params.id)
//   res.send(req.params.id)
// })


router.get('/getname', function (req, res) {
  // res.setHeader('Content-Type','')
  console.log("get name ...")
  res.json({
    name: 'hanye',
    age: 20
  })
})

//crud: create read update delete

//数据的添加,消息体在body上
//建议全部更新
router.post('/add', function (req, res) {
  //用req.body获取post数据,需要装body-parser中间件                   //router.post
  console.log(req.body);
  res.send(req.body)
})

//获取数据,请求的参数在url地址上,在不同的浏览器上有长度的限制
//长度的限制是浏览器限制的
//http://localhost:3000/user/getinfo?username=hanye&age=20
router.get('/getinfo', function (req, res) {                     //router.get
  //req.query 不需要装任何中间件,或者配置      
  console.log(req.query)
  res.send(req.query)
})


//数据的更新,消息体在body 上 
//建议全部更新
router.put('/r1', function (req, res) {
  res.send('r1')
});

//数据的更新,消息体在body 上 
//建议部分更新 {name:'zhangsan',age:20,address:"beijing"}
router.patch('/r2', function (req, res) {
  res.send('r2')
})

//数据的删除,消息体在body上
router.delete('/r3', function (req, res) {
  res.send('r3')
})

//数据的协商,测试服务端的一些功能
router.options('/r4', function (req, res) {
  res.send('r4')
})

// head
// 类似于get请求,返回的响应中没有类容,用于获取报头


router.get('/r5', function (req, res) {
  throw new Error('error message')
})

module.exports = router;

Egg.js  POST 请求参数获取

// app/router.js
// ...
router.post('/add', controller.home.add);
// app/controller/home.js
// post 请求方法
async add() {
  const { ctx } = this;
  const { title } = ctx.request.body;
  // Egg 框架内置了 bodyParser 中间件来对 POST 请求 body 解析成 object 挂载到 ctx.request.body 上
  ctx.body = {
    title
  };
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值