构建自定义API连接器的常用方法有哪些?

时间:2017-11-16 13:28:38

标签: node.js rest express heroku

我主要是作为Web开发人员的编程经验,现在我的任务是构建两个休息服务之间的集成。应用程序假设每5分钟从一个REST服务读取一次,并将数据发送到另一个服务。我需要以某种方式存储单个checkSUM值以便在下次调用时使用。

目前我正考虑在Node和Express中构建它,在heroku上使用“自定义时钟进程”进行托管。但我不确定构建这样一个应用程序的最佳方法是什么。在没有视图的情况下处理应用程序对我来说很陌生。 MVC在这样的应用程序中是否有意义?

有人能指出资源解释一个接近这样的应用程序的好方法吗?

即使没有视图层,表达也有意义吗?

存储单个值(例如checkSUM或SyncKey)的好方法是什么? DB过度杀伤吗?

像这样的应用程序的文件夹结构是什么样的。

我知道这是一个非常广泛的问题。我主要是在寻找建议和资源,以及其他人如何处理这个问题的想法。你会用什么技术?

1 个答案:

答案 0 :(得分:1)

您可以使用request包向您的服务发送请求。并cron打包以每5分钟安排一次任务。

以下是此方案的简单代码

var request = require('request');
var CronJob = require('cron').CronJob;

var SOURCE_SERVICE_URL = "http://your.source.service/endpoint";
var DESTINATION_SERVICE_URL =  "http://your.destination.service/endpoint";

//initialize this value when you get checkSUM from request and use to compare next checkSUM
var lastCheckSUM = "";

var everyMinuteJob = new CronJob({
    cronTime: '*/5 * * * *',
    onTick: function () {
        console.log("Task started");
        task_1();
        //you can create and add tasks for other endpoints
    },
    start: true
});


var task_1 = function () {
    request(SOURCE_SERVICE_URL, function (error, response, body) {
        if (error) {
            console.log("Can not read data from source service.")
            return console.log(error);
        }
        console.log("Data read : " + body);
        //TODO - check the checkSUM value of response. Then set it to lastCheckSUM

        request
            .post(DESTINATION_SERVICE_URL, body, function (error, response, body) {
                if (error) {
                    console.log("Can not send data to destination service.")
                    return console.log(error);
                }
            })

    });
}