egg.js 如何获取request.body?
最近打算使用egg.js做一个持续部署的工具,需要用到webhook,但是在校验的过程中,官方给了一个demo,是用express做的就可以通过验证,egg.js就无法通过验证,
官方demo如下
const express = require('express');
const bodyParser = require('body-parser');
const crypto = require('crypto');
const app = express();
app.use(bodyParser.text({ type: '*/*' }));
// ...
我找到了两个差别在于里面有一个字段
使用express的body-parser获取到的是:
"html_url":"\u003ca href\u003d\u0027https://coding.net/u/TEST/p/game_hr\u0027 target\u003d\u0027_blank\u0027\u003egame_hr\u003c/a\u003e"
使用egg获取到的是:
"html_url":"<a href='https://coding.net/u/TEST/p/game_hr' target='_blank'>game_hr</a>"
请问egg.js如何获取express那样的格式?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
egg.js 用
ctx.request.rawBody
(没有解析过的body,字符串类型)获取body值,不用ctx.request.body
, 等同于express里的req.body
(配置是bodyParser.text({ type: '*/*' }))
以下是分析历程:
\u
这个是Unicode转义字符。上面两段用字符串表示在js里是相等的。如图:既然说是不一样的,那就怀疑你取的内容是不是转义过的(即
'\\u003c'
在控制台输出后显示的是\u003c
)所以有一点要你自己明确 “使用express的body-parser获取到的是:...” 这里你是怎么获取的,以下我写的案例,同一个body我可以展现出三个不一样的输出:
案例代码:
postman 测试接口

输出:
个人猜测:你express取的是第二种结果,egg.js你取的是第三种结果(egg.js 自动会将body转为json对象,即typeof ctx.request.body === object)