1

nodejsは初めてです。複数のカテゴリ、たとえばカテゴリを含むRESTサービスを構築したいと思います。

> app.js 
var express = require('express')
  , http = require('http')
  , routes = require('./routes')
  , path = require('path');

app = express();
app.use(app.router);

app.get('*',routes.index);

app.listen(3000);
console.log('Express app started on port 3000');

> routes/index.js
var sites = [
    'sve',
    'ice'
];

exports.index = function(req,res){
    var url = req.url.split('/');
    for (i in sites) {
        app.get('/' + sites[i] + '/*',require('./' + sites[i]));
    }
};  

> routes/sve/index.js
module.exports = function(req, res){
  console.log('sve')
  res.end({category:'sve'});
};

> routes/sve/index.js
module.exports = function(req, res){
  console.log('sve')
  res.end({category:'sve'});
};

「nodeapp」を実行すると「Expressappstartedon port 3000」が表示され、サーバーは実行されていますが、「localhost:3000 / sve / test」にアクセスすると、応答がないか、「localhost:3000 / ice/test」または「localhost:3000 / abc/test」でも。コンソールでもありません。

私は何が間違っているのですか?

4

1 に答える 1

3

私のコメントで述べたように、あなたはサブアプリ(Railsエンジンなど)を使用してアプリケーションをモジュール化する方法を探していると思います。この場合は、app.use()を使用してサブアプリをマウントする必要があります。

ここに良いビデオがあります

ビデオで言及されていない関連性の最後の1つは、サブアプリを相対的にマウントすることができます。例えば:

var subapplication = require('./lib/someapp');

app.use('/base', app.use(subapplication));

これにより、サブアプリケーション内のルートが「/base」パスからのものとして扱われます。たとえば、サブアプリケーションで「/ a」をキャッチするルートは、この例でマウントされると、リクエストを「/ base/a」に一致させます。

于 2013-03-04T22:25:05.373 に答える