创建一个 API 来包装一个... API?

Creating an API to wrap an... API?

这不是一个具体的问题,但我正在尝试围绕 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 并使用该设备进行收费会更好?

我没有代码库,所以没有什么可挑剔的,但我想不出还有什么地方可以问,对不起大家

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

Stripe 集成可能是一个很好的例子,说明在哪些地方遵循这种模式是有意义的。您当然不想推出自己的支付服务。

这是一个本地 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}`);