1

是否有任何人可以为构建这样的应用程序提供任何好的示例或指导?

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 路由是正确的吗?有什么可以做的来简化和减少重复的事情吗?

4

1 回答 1

2

角度形式应该直接发布到 api 服务器。Express 仅用于提供 angular html/javascript/static 文件。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 路径。

  • 访问/路径的请求将转到客户端服务器(您可以在其中托管 express js 和 angular 文件)
  • 访问 /api/* 路径的请求将被转发到 apiserver

然后,您的角度形式可以直接将 api 调用到 /api/*

希望有帮助。

于 2013-05-07T14:17:48.470 回答