在Nodejs中联机时创建和更改API

时间:2017-09-26 05:03:52

标签: node.js rest api server

尝试使用Node.js开发应用程序(或服务),为每个用户提供可以从{theirUserName}.ourwebsite.com调用的自定义API。用户可以通过编辑器在应用程序中更改/编辑/远程API的端点。他们可以将params添加到端点,添加auth等。

现在我的问题是,我们如何首先在线创建API,然后我们如何在不停止API应用程序并再次运行的情况下在线更改端点?

P.S:API配置将保存到将保存到数据库的JSON中,一旦配置更改,将引发一个告诉我们端点已更改的事件。

1 个答案:

答案 0 :(得分:1)

使用Express,您可以在服务器收听后添加路由,因此不会出现问题。请注意优先级,因为它将添加到堆栈的底部。

我建议有一个db存储路由,并且在运行节点app时(在侦听之前)加载db中的所有路由并将它们添加到路由器。为了能够扩展您的应用程序以及能够安全地重新启动它。

然后开始收听,并有路由添加路由,删除路由,更新路由等。

以下是收听后添加路线的简单示例:

const app = require('express')();
const bodyParser = require('body-parser');

app.use(bodyParser.json());

const someGenericHandler = function(req, res) {
    return res.json({ message: 'foobar' });
};

// it creates a route
app.post('/routes', function(req, res) {
    try {
        const route = req.body;
        app[route.method](route.path, someGenericHandler);
        return res.json({ message: `route '${route.method}${route.path}' added` });
    } catch(err) {
        return res.status(500).json({ message: err.message || 'an error occured while adding the route' });
    }
});

app.listen(process.env.PORT);

您可以尝试使用此代码,将其粘贴到文件中,比如说index.js。 运行npm i express body-parser,然后PORT=8080 node index.js,然后使用json有效负载(以及正确的内容类型标头,使用邮递员)向http:/localhost:8080/routes发送POST请求  像这样:{ method: 'get', path:'/' },然后通过GET请求@ http://localhost:8080/尝试全新的路线'

请注意,如果您希望每分钟有数百个用户和数千个请求,我强烈建议每个用户使用一个应用程序,并为用户注册一个主应用程序,并且可能会为每个应用程序生成一个带有一些自动脚本的小VPS用户注册时,或每个用户有某种请求限制。

希望这有帮助