2013-05-03 2 views
1

Y a-t-il de bons exemples ou des conseils que quelqu'un peut fournir pour structurer une application comme celle-ci?node.js angulaire client jade et node.js reste api

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

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

L'API est actuellement privée, uniquement accessible depuis les serveurs hébergés.

S'il y a une page qui crée des recettes par exemple, est-ce exact? client

- 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. 

Est-ce droit ayant le client en double les routes api? Y at-il quelque chose qui peut être fait pour simplifier et rendre les choses avec moins de duplication?

Répondre

2

Les formes angulaires doivent simplement être envoyées directement au serveur API. Express est utilisé uniquement pour servir les fichiers html/javascript/static angulaires. Les moins de couches entre le html et l'api sont les meilleurs. Je ne vois pas de bonnes raisons pour lesquelles vous avez besoin que le client duplique les routes API.

Étant donné que votre API est derrière le serveur hébergé, vous pouvez configurer le serveur nginx pour router tous vos appels API du serveur hébergé vers le serveur API. Ce qui suit est une configuration nginx exemple pour faire le routage:

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; 
    } 

note ci-dessus est un extrait de la nginx.conf.

Nginx examinera le chemin de votre URL.

  • demandes accès/chemin va aller au serveur client (où vous pouvez héberger express.js et fichiers angulaires)
  • demandes ayant accès/api/* chemin seront transmis au apiserver

Votre angulaire formulaire peut alors appeler l'API directement à/api/*

Espérons que cela aide.

+0

merci pour la réponse. Nous ne sommes pas prêts à le faire parce qu'il n'y a pas de sécurité sur l'API qui permettrait à quiconque de l'utiliser. – dre

+1

ok alors ce que vous avez indiqué ci-dessus est sur la bonne voie, sauf peut-être que vous gagnez du temps en mettant en place un itinéraire générique sur Express vers le serveur API. Si l'authentification est requise, vous pouvez alors intercepter la demande sur l'express et ajouter l'auth token/etc nécessaire à l'en-tête/url http avant de le transmettre au serveur api. – maethorr