尝试使用Node.js开发应用程序(或服务),为每个用户提供可以从{theirUserName}.ourwebsite.com
调用的自定义API。用户可以通过编辑器在应用程序中更改/编辑/远程API的端点。他们可以将params添加到端点,添加auth等。
现在我的问题是,我们如何首先在线创建API,然后我们如何在不停止API应用程序并再次运行的情况下在线更改端点?
P.S:API配置将保存到将保存到数据库的JSON中,一旦配置更改,将引发一个告诉我们端点已更改的事件。
答案 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用户注册时,或每个用户有某种请求限制。
希望这有帮助