javascript - REST API 的思考

标签 javascript node.js rest express reflection

我正在尝试构建一个(尽可能接近的)通用 REST API 来简化所有标准 CRUD 休息调用。例如,我想编写一个 read 方法

models.{Entity}.findById(id)
  .exec(function(err, entity) {
    res(err, entity)
  }

{Entity} 应使用其余调用中的参数动态填充,例如:

GET /api/v1/entity/:id/:type
GET /api/v1/entity/1234567890/user

显然我可以做一个像这样的半通用解决方案:

if (type === 'user') var query = models.User;

但在我看来,这并不是一个很好的解决方案。

问题

是否有一种简单的方法来实现这一点,并且这在更大的应用程序上可行吗?因为我所知道的关于其他语言的反射的一切,它们的性能并不是那么好。

关于如何实现这样的框架还有其他建议吗?

解决方案:

就像丹尼尔建议我创建一个 map

var map = new Map();
map.set('user', models.User);

最佳答案

当涉及到不同的反射技术、不同的语言、不同的语言实现、底层硬件/操作系统平台时,反射性能是全面的。虽然 Java 的性能较差是出了名的,但其他语言的开销却可以忽略不计。 TLDR:我不会排除它,除非你有证据表明它确实会减慢你的速度。

在这种情况下,作为JavaScript,我认为你可以做models[name.toLowerCase()],它与models.User等相同,但很通用。

如果反射确实有成本,您仍然可以通过memoizing来一般性地处理它。结果,即一般计算一次并无限期地缓存结果类。

关于javascript - REST API 的思考,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31813374/

相关文章:

javascript - 数据可视化 : Best tools to generate simple charts in PDF with Javascript or Python

javascript - Sitecore SPEAK UI 以编程方式设置 ComboBox 的选定项目

JSON Stringify 函数返回相等,但 chai 的 equal 函数返回不相等

mysql - NodeJS JSON 到 SQL 和 SQL 到 JSON 库?

javascript - 如何优化 Canvas 上的动画? HTML 5

javascript - Vue路由器: HTML5 Canvas image links won't route to the right URL

node.js - 服务器端和胖客户端 Web 应用程序的文件夹结构

javascript - Web 浏览器与 RESTful API 交互是一种好的做法吗?

C# REST API 调用 - 在 Postman 中工作,而不是在代码中

node.js - 本地存储和 session 之间的区别