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

angular フォームは、API サーバーに直接投稿する必要があります。Express は、Angular html/javascript/static ファイルを提供するためだけに使用されます。html と api の間の層が少ないほど良いです。APIルートを複製するためにクライアントが必要な理由がわかりません。

API はホストされたサーバーの背後にあるため、ホストされたサーバーから API サーバーにすべての API 呼び出しをルーティングするように nginx サーバーをセットアップできます。以下は、ルーティングを行うための 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 に転送されます

その後、Angular フォームは API を /api/* に直接呼び出すことができます

それが役立つことを願っています。

于 2013-05-07T14:17:48.470 に答える