创建用于包装API的API?

时间:2019-03-15 09:26:22

标签: node.js rest api abstract

这不是一个特定的问题,但是我试图围绕REST API的概念,并在您自己的API中调用API。

例如,如果我开发了一个名为“ BeesBees”的应用程序,用户可以在其中购买蜜蜂,并且我有一个登录名和密码数据库,而且显然还有蜜蜂,以及每种费用多少,我知道我可以使用自己的应用BeesBees API获取蜜蜂列表(如果我向其他人开放,他们也可以使用我的GET / bees点获取蜜蜂)

但是,如果我想允许客户购买蜜蜂,并且不想建立一个完整的平台来购买蜜蜂,那么我集成了Stripe-我可以进行POST /:users / charges /:priceOfBee API调用进而以某种方式调用Stripe API函数?例如,指向将使用Stripe的Node.js SDK收费的Node.js项目的URL。

或者,在这种情况下,最好只为我的设备的平台实施Stripe SDK并使用该设备收费?

我没有代码库,因此没有什么可区别的,但是我想不出其他任何要问的地方了,对不起

1 个答案:

答案 0 :(得分:1)

您当然可以将API与其他API封装在一起,这实际上只是一种组合形式,可以将其委托给其他有意义的服务。

条带集成可能很好地说明了遵循这种模式的合理性。您当然不希望推出自己的付款服务。

这是一个本地Express服务器发出API请求的简单示例:

const express = require("express");
const port = 3000;
const app = express();
const request = require('request');

app.get("/api/example", (req, res) => {
    // Make external REST request here...
    let options = {
        url: 'https://httpbin.org/get',
        qs: { parameter1: 42 },
        json: true
    }
    request(options, (err, response, body) => {
        if (err) {
            res.status(500).send(err.message);
        } else {
            res.status(200).send(body);
        }
    });
});

var server = app.listen(3000, function () {
    var host = server.address().address;
    var port = server.address().port;
    console.log('running at http://' + host + ':' + port)
});

console.log(`Serving at http://localhost:${port}`);