我有一个来自我的客户的电话,它传递了一些这样的帖子数据:
function doSomethingApi(email) {
return axios({
method: 'post',
url: `/api`,
data: {
scan_refference: 'ref',
user_email: email
}
})
}
在服务器端,这会被代理以应用某些秘密:
app.post('/api', (req, res) => {
const url = 'https://my.api.com';
req.pipe(request({
url,
headers: {
'Content-Type': 'application/json',
Accept: 'application/json'
},
auth: {
user: secrets.USERNAME,
pass: secrets.PASSWORD
},
body: {
value1: `${secrets.VALUE1}`,
value2: `${secrets.VALUE2}`
}
})).pipe(res);
});
request
和axios
只是我使用的两个不同的http库,一个是服务器的客户端首选,这就是全部。现在的问题是我在我的代理中覆盖了body,因为我想简单地将value1和value2添加到从客户端传递的现有主体。
答案 0 :(得分:1)
首先从初始调用中获取正文作为JSON对象。这取决于您使用的是什么,例如在Express中你可以:
app.use(express.bodyParser());
然后
var previousBody = req.body
最后将初始JSON与您想要的任何内容合并(注意:这意味着您的客户肯定无法使用" value1"和" value2"属性,因为它们将是重写)
body: Object.assign(previousBody, {
value1: `${secrets.VALUE1}`,
value2: `${secrets.VALUE2}`
})