gpt4 book ai didi

express - aws sns 确认订阅请求处理问题

转载 作者:行者123 更新时间:2023-12-03 18:22:14 24 4
gpt4 key购买 nike

我正在尝试为 s3 中的存储桶实现 aws sns 服务,我正在关注此文档 https://docs.aws.amazon.com/sns/latest/dg/SendMessageToHttp.html
据此,确认订阅请求中将有订阅 url,该请求将到达我们提供的 url,但我在请求中收到空正文。
我试图记录 body ,但给了我一个空物体。并尝试使用 bodyparser 但结果相同。

这是我正在实现的路线。

 router.post("/s3FileCallback", function (req, res) {
debugger;
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json())
if (req.get("x-amz-sns-message-type") == "SubscriptionConfirmation") {
console.log("arn" + req.get("x-amz-sns-topic-arn"));
const subscribeUrl = req.body.SubscribeURL;
console.log("subscribeUrl" + subscribeUrl);
})

有什么我想念的吗?任何人都可以指出我正确的方向。

最佳答案

我找到了我缺少的东西,

router.post('/s3FileCallback', function(req, res) {
debugger;
if (req.get('x-amz-sns-message-type') == 'SubscriptionConfirmation') {
console.log('arn' + req.get('x-amz-sns-topic-arn'));
const subscribeUrl = req.body.SubscribeURL;
console.log('subscribeUrl' + subscribeUrl);
}
});

我使用正文解析器作为中间件,
亚马逊在帖子请求中将内容类型发送为 text\plain 感谢这个论坛我没有意识到类型,直到我穿过这个
https://forums.aws.amazon.com/message.jspa?messageID=261061#262098

所以在使用 bodyparser 之前尝试了一种解决方法来更改标题

app.use(function(req, res, next) {
if (req.get('x-amz-sns-message-type')) {
req.headers['content-type'] = 'application/json';
}
next();
});
app.use(bodyParser.json({ limit: '50mb' }));
app.use(bodyParser.urlencoded({ limit: '50mb', extended: false }));

所以现在 req 被解析为 json。

关于express - aws sns 确认订阅请求处理问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51509836/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com