使用快递将解码的 POST 数据转发到其他 URL



一些背景信息:

我有一个通过 LoRaWAN 连接的温度传感器. 来自传感器的数据已编码,但传感器制造商提供解码器(节点应用(。 我想在事物板中显示数据。

现在我想构建一个简单的快速API(我是Express的新手(作为一种中间件。 唯一的目的是接收编码的数据,对其进行解码(输出为JSON格式(,并将其传递给Thingsboard。

在最后一步,我需要一些帮助。这是我的路线:

const decoder = require('../helpers/decoder');
module.exports = app => {
app.post('/', (req, res) => {
const data = {
type: req.body.productType,
payload: req.body.payloadValue
};
const jsonData = decoder.decode(data.type, data.payload);
// jsonData needs to be forwarded/redirected Thingsboard
});
};

谁能指出我正确的方向,如何传递"处理过的"POST 数据并将其传递给另一个 URL(Thingsboard HTTP 端点 URL(

提前感谢!

💡这不是最佳实践,但是如果您想从另一个路由中的某个路由读取一些数据,而不在调用路由时传递它们,那么您可以尝试以下代码: 👇

const express = require('express');
const app = express();
app.post('/', (req, res) => {
app.locals['decoder'] = { data: "This is my decoder data"};
res.send('Successfully to add decoder data');
});
app.get('/', (req, res) => {
res.send(app.locals['decoder']);
} )
app.listen(3000, () => {
console.log('Server is up');
});

⚠️需要注意的是,上面的代码只是如何在另一个路由上从一个路由读取数据的示例。

另一种选择:

👨 🏫 您可以创建一个用于解码payload的中间件,并在需要解码payload结果的每个路由上使用中间件。

⚠️ 但是,应该注意的是,对于此问题,您必须在需要解码结果的每个路由上留下一个payload,以便可以对其进行解码。

已更新:将数据传递到外部终结点

💡 如果要将数据传递到外部终结点或其他网站,请参阅以下代码: 👇

const axios = require('axios');
app.post('/', (req, res) => {
const decoder = { data: "This is my decoder data"};
// method of external-endpoint: e.g: POST
axios.post('https://www.example-website.com/api/v1/example-endpoint', decoder)
.then(response => {
console.log(response);
}).catch(ex => {
console.log(ex);
})
})

除了此答案之外,您还可以在示例快速服务器中使用该路由。

我希望它能帮助你🙏.

最新更新