У меня есть экспресс-приложение, настроенное как webhook для другого стороннего приложения.Одна из конечных точек в webhook получает ответ от стороннего приложения.Содержимое ответа имеет тип application/octet-stream
.
Содержимое заголовка сообщения выглядит следующим образом -
{
"host": "event-simulator.cfapps.sap.hana.ondemand.com",
"user-agent": "Vert.x-WebClient/3.6.2",
"content-length": "335",
"b3": "...",
"content-type": "application/octet-stream",
....
}
Теперь в конечной точке экспресса я пытаюсь напечатать тело, используя JSON.stringify(body)
.Но он печатает пустое тело, т.е. {}
Код -
const express = require('express');
const app = express();
const port = process.env.PORT || 3000;
app.use(express.json());
app.get('/', (req,res)=>{
res.send('Default Page')
})
app.post('/events', (req,res)=>{
body = req.body
console.log("Headers - "+JSON.stringify(req.headers));
console.log('Message - ' + JSON.stringify(body)
if( body.length > 2 ){
return res.status(200).send('Successful')
}
return res.status(400).send('Error: Missing event payload')
})
app.listen(port, () => {
console.log('server started on port ' + port);
})
Однако тот же API при вызове из PostMan работает абсолютно нормально, даже если тип ответа по-прежнему application/octet-stream
Пример ответа в Почтальоне -
{
"eventType": "BChanged",
"eventTime": "2019-06-12T10:26:13Z",
"contentType": "application/json",
"data": {
"KEY": [
{
"PARTNER": "1234555"
}
]
}
}
Заголовки -
Content-Length →335
Content-Type →application/octet-stream
Date →Wed, 12 Jun 2019 10:26:24 GMT
Strict-Transport-Security →max-age=31536000; includeSubDomains; preload;