angularjsとnodejsにMoto Advertsアプリケーションがあります。Angularjs-client-side は Apache HTTP サーバー (localhost:8000) で実行されていますが、nodejs-server-side は node.js http サーバー (localhost:3000) として実行されています。
クライアント側のコード (angularjs):
var motoAdsServices = angular.module('motoAdsServices', ['ngResource']);
motoAdsServices.factory('Brand', ['$resource', function($resource) {
return $resource('http://localhost\\:3000/api/:id', {}, {
query: {
method: 'GET',
params: {
id: 'brands'
},
isArray: true
}
});
}]);
サーバー側のコード (nodejs):
var express = require('express');
var path = require('path');
var http = require('http');
var brands = require('./routes/brands');
var app = express();
var allowCrossDomain = function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
next();
};
app.configure(function() {
app.set('port', process.env.PORT || 3000);
app.use(express.logger('dev')); /* 'default', 'short', 'tiny', 'dev' */
app.use(express.bodyParser()),
app.use(allowCrossDomain);
app.use(express.static(path.join(__dirname, 'public')));
});
app.get('/api/brands', brands.findAll);
http.createServer(app).listen(app.get('port'), function() {
console.log("Express server listening on port " + app.get('port'));
});
私の質問は次のとおりです。
- 同じサーバーでクライアント側とサーバー側を実行するにはどうすればよいですか。a) Apache HTTP サーバー上 (localhost:8000)。b) (localhost:3000) 上の Node.js セルフ http サーバー。
- クライアント側とサーバー側の 2 つの独立したサーバー、または 1 つだけの、本番環境での使用に最適なアーキテクチャはどれですか?
- サーバー側でクロスオリジン リソース共有 (CORS) を使用することは良い方法ですか (2 つの独立したサーバーが必要な場合)?
- アドレスhttp://localhost:3000/api/brandsをサーバー側にハードコードしないようにするにはどうすればよいですか (ベスト プラクティス)?