2017-06-12 65 views
1

我正在使用第三方API Rest,它返回正文中文件的內容。該文件可以是文本或二進制文件(pdf,docx)。從響應中重新發送身體

出於安全原因,我需要使用中間API Rest作爲我的前端應用程序和此第三方API Rest之間的橋樑。

我想要的是能夠返回從第三方到我的前端應用程序的完全相同的身體,因爲在我獲得身體並在我的中間API中構建新響應的那一刻,我以某種方式修改某物

這是我做的,我中間API:

const options = { 
    method: 'GET', 
    uri: `${api}`, 
    headers: { OTCSTICKET: ticket} 
} 

rp(options) 
    .then(parsedBody => res.status(201).send(parsedBody)) 
    .catch(err => res.status(400).send({ msg: 'download error', err })); 

我需要精確地發送相同的身體,我的迴應得到的。我怎樣才能做到這一點?

謝謝

+0

格式化代碼指出缺少關閉\',你應該檢查它是否在你的代碼中缺失,如果沒有修復它的問題。 – Aaron

+0

修復了這個問題;原來的代碼很好,謝謝。 – David

+0

[使用請求獲取Node.js中的二進制內容]的可能重複(https://stackoverflow.com/questions/14855015/getting-binary-content-in-node-js-using-request) – GilZ

回答

0

好吧我設法讓這個工作,所以我會張貼在這裏,以防萬一它幫助某人。

這個線程給我的解決方案 Getting binary content in Node.js using request

所以我只是將編碼設置爲空,我的身體通過了一個我從第三方API

const options = { 
    method: 'GET', 
    uri: `${api}`, 
    headers: { OTCSTICKET: ticket}, 
    encoding: null, 
    resolveWithFullResponse: true 
} 

rp(options) 
    .then(response => res.status(201).send(response.body)) 
    .catch(err => res.status(400).send({ msg: 'download error', err })); 

拿到有了這個,我設法得到這個工作。