Koa中间件ctx.request.body为何是字符串?
koa 中间件获取的 ctx.request.body 的typeof为什么会是字符串呢
这边是使用了koa-body解析body数据
下面是index.js 引入koa-body
const Koa = require('koa');
const { koaBody } = require('koa-body');
const userRouter = require('../routers/user.route');
const app = new Koa();
app.use(koaBody());
app.use(userRouter.routes());
const errHandler = require('./errHandler')
// 统一的错误处理
app.on('error', errHandler)
module.exports = app
route文件中,post 传 ctx.request.body给中间件 (打印发现是字符串)
const Router = require('koa-router');
const router = new Router({ prefix: '/user' });
//中间件
const { userValidator, verifyUser, crpytPassword } = require('../middleware/user.middleware')
const { register, login } = require('../controller/user.controller')
//GET user
// router.get('/', async (ctx, next) => {
// ctx.body = 'user';
// });
//POST
// 合法性 合理性 加盐 register
router.post('/register', userValidator, verifyUser, crpytPassword, register)
router.post('/login', login)
module.exports = router;
中间件打印是字符串
//加密
const crpytPassword = async (ctx, next) => {
console.log(typeof ctx.request.body,'---------------');
return
const { password } = ctx.request.body
const salt = bcrypt.genSaltSync(10)
// hash保存的是 密文
const hash = bcrypt.hashSync(password, salt)
ctx.request.body.password = hash
await next()
}
无
回复
1个回答

test
2024-06-23
这个要看请求你传的Content-Type类型
fetch("http://localhost:7777/deploy?d=1111",{
method:'POST', //请求类型
headers:{ //请求头
"Content-Type":'application/json'
},
body:JSON.stringify({ a:33333}), //请求参数
}).then(function(res){
return res.json();
})
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容