Как извлечь объект JSON из API, который возвращает данные типа application / octet-stream? - PullRequest
0 голосов
/ 12 июня 2019

У меня есть экспресс-приложение, настроенное как 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...