当前位置: 首页 > 知识库问答 >
问题:

node.js - Koa中间件ctx.request.body为何是字符串?

微生新霁
2023-12-22

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 // 合法性 合理性 加盐 registerrouter.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()}

image.png

共有1个答案

华凯捷
2023-12-22

这个要看请求你传的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();})
 类似资料:
  • 我的目标的一个例子是: 我的目标是: 我不知道如何处理这件事,任何帮助都是很好的,我的目标是在最后有每一个可能的组合点和我的字,这是“你好”。

  • 问题内容: 例如,HTTP REST API刚刚向我返回了JSON,但是现在它是一个字符串。如何将其转换为JSON? 问题答案: 您需要使用此功能。 它将返回包含在字符串中的对象/数组。

  • 本文向大家介绍如何检查字符串中的字符是否为Python中的字母?,包括了如何检查字符串中的字符是否为Python中的字母?的使用技巧和注意事项,需要的朋友参考一下 您可以使用字符串类中的方法。它检查字符串是否仅包含字母。您也可以使用它来检查字符是否为字母。例如,如果您要检查第5个索引处的char是否为字母, 您也可以检查整个字符串,无论它们是否为字母。例如,

  • 如果依靠ctx.request.url去手动处理路由,将会写很多处理代码,这时候就需要对应的路由的中间件对路由进行控制,这里介绍一个比较好用的路由中间件koa-router 安装koa-router中间件 # koa2 对应的版本是 7.x npm install --save koa-router@7 快速使用koa-router demo源码 https://github.com/ChenSh

  • 本文向大家介绍node中koa中间件机制详解,包括了node中koa中间件机制详解的使用技巧和注意事项,需要的朋友参考一下 koa koa是由express原班人马打造的一个更小、更富有表现力、更健壮的web框架。 在我眼中,koa的确是比express轻量的多,koa给我的感觉更像是一个中间件框架,koa只是一个基础的架子,需要用到的相应的功能时,用相应的中间件来实现就好,诸如路由系统等。一个更

  • 问题内容: 尽管非常了解JavaScript,但我对Node.js生态系统中的这三个项目的 确切 用途感到困惑。像Rails的架子吗?有人可以解释一下吗? 问题答案: [ 更新: 从4.0版本开始,Express不再使用Connect。但是,Express仍与为Connect编写的中间件兼容。我的原始答案如下。 我很高兴您对此提出疑问,因为对于那些关注Node.js的人们来说,这无疑是一个常见的困