2013-05-03 142 views
1

是否有任何好的示例或指导,任何人都可以提供构建这样的应用程序?node.js angular jade客户端和node.js rest api

Client (client.company.com) 
    Node.js 
    Angular 
    Jade 
    ExpressJS 

Server (private) (server.company.com) 
    node.js 
    "rest" api (express) 

该API现在是私有的,只能从托管服务器访问。

如果有一个页面创建食谱例如,是这样吗? 客户端

- angular form with router that posts to client.company.com/recipe 
- express would need route to handle that /recipe 
- that route would then post to api server server.company.com/recipe 
- then response would be propagated through the layers back to the ui. 

那是不是有客户端复制api路由?有什么可以做的,以简化和减少重复的东西?

回答

2

角形应该直接发布到api服务器。 Express仅用于提供角度html/javascript /静态文件。 html和api之间的层数越少越好。我没有看到有什么好的理由说明为什么你需要客户端来复制api路由。

由于您的api位于托管服务器后面,因此您可以设置nginx服务器将所有api调用从托管服务器路由到api服务器。以下是一个示例nginx的配置做路由:

upstream clientServer { 
    server client.company.com:80; 
} 

upstream apiServer { 
    server server.company.com:80; 
} 

server { 

    location/{ 
     root html; 
     index index.html index.htm; 
     proxy_pass     http://clientServer; 
     proxy_set_header   Host   $host; 
     proxy_set_header   X-Real-IP  $remote_addr; 
     proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 

    location /api { 
     proxy_pass     http://apiServer; 
     proxy_set_header   Host   $host; 
     proxy_set_header   X-Real-IP  $remote_addr; 
     proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 

注意上面是nginx.conf的一个片段。

Nginx会查看你的URL路径。

  • 请求访问/路径会去客户端服务器(在那里你可以承载快递JS和角文件)
  • 请求访问/ API/*路径将被转发到API服务器

你的角表单可以直接调用api到/ api/*

希望有帮助。

+0

感谢您的回答。我们还没有准备好这么做,因为api上没有任何安全措施可以让任何人使用它。 – dre 2013-05-07 23:29:54

+1

好了,那你上面说的是在正确的轨道上,除了你可以通过在api服务器上快速设置通配符路由来节省时间。如果需要身份验证,则可以在express上截取请求,并在转发到api服务器之前将必要的身份验证令牌/等附加到http标头/ url。 – maethorr 2013-05-08 08:43:27