使用提供多种语言的Node / JS构建RESTful API

时间:2015-05-06 16:59:22

标签: angularjs node.js express

这不是我在SO上真正看到过的问题。使用node / express构建RESTful API的大多数教程都集中在单个技术堆栈上。我的团队遇到麻烦的是构建一个服务于多个堆栈的Node API,特别是Angular和Scala,但后来可能会有更多。

在我使用Angular(例如)中看到的大多数示例中,Angular用于设置其MVC的路由代码直接进入" app.js"它似乎根本不会扩展到其他平台。我怀疑是"技巧"是将路由分解为单独的文件,以便使用路由分离设置多个路由模式。然后设置/angular/foo/scala/bar等路线,然后在这些路线上构建这些平台。

我不是在寻找最好的"方式,我正在寻找如何解决这个问题的具体高级示例,与架构底部的节点/表达堆栈直接相关。

2 个答案:

答案 0 :(得分:2)

根据你的评论,似乎有一些混乱,你试图在一个应用程序中将Scala和Angular融合在一起,并且你想为每个端点提供单独的端点来进行路由。

一般来说,Angular应用程序通常是SPA。它们不会更改页面(至少不是传统的每页请求意义),并且所有路由都在客户端处理。他们只是在后台使用RESTful API。 RESTful API通常是一个JSON,与语言无关的端点。然后从静态文件服务器提供Angular应用程序..这可以是节点,但也可以是Nginx(或类似)。

现在,一些角度应用程序将其端点的所有路由从服务器端重写为其app.js。换句话说,您可能会看到Angular应用程序将所有请求重定向到它的app.js,以便客户端可以处理路由。如果Angular应用程序上有人刷新页面,这很有用。这只是必要的,但是如果您使用HTML5历史记录API - hashbangs不需要重写。

Scala和Angular不需要为数据设置不同的端点 - 仅用于文件服务。只要输出两种语言都理解的格式(通常是JSON),REST端点就可以完全相同。

答案 1 :(得分:1)

我不知道为什么你会想要两个不同的API用于不同的堆栈。为什么你不能为Angular和Scala使用一个API?

但是,如果您想将API拆分为多个文件,我建议您使用express.Routerhttp://expressjs.com/4x/api.html#router