2014-06-05 4 views
1

이것은 내 첫번째 NodeJS 프로젝트입니다. 모듈 식 REST API를 디자인하고 싶습니다. 하지만 일이 잘 진행되지 않고 localhost/api/*에 대한 호출이 무시되고 대신 색인이 렌더링됩니다.
어떻게 해결할 수 있습니까? 시간 내 주셔서 대단히 감사합니다. server.jsModular NodeJs routing

var express = require('express'); 
var app = express(); 
require('./server/config/express')(app); 
require('./server/config/routes')(app); 
app.listen(port); 

./server/config/express

var express = require('express'), 
    config = require('./config'); 

module.exports = function(app) { 
    app.configure(function() { 
     app.use(app.router); 
    }); 
}; 

./server/config/routes

module.exports = function(app) { 
    app.use('/api', require('../route/api')(app)); 
    app.get('*', function(req, res) { 
    res.render('index'); 
}); 
}; 

../route/api

module.exports = function(app) { 
    app.use('/student', require('../route/student')); 
    app.use('/teacher', require('../route/teacher')); 
}; 

../route/student

module.exports = function(){ 
    var express = require('express'); 
    var router = new express.Router(); 

    router.get('/', function(req, res){ 
     res.send("api/student/"); 
    }); 

    router.get('/courses', function(req, res){ 
    res.send("api/student/courses"); 
    }); 

    return router; 
}(); 
+0

어떤 특급 버전을 사용하고 있습니까? – elmigranto

답변

0

중간 정도입니다. 기본적으로 각 경로 섹션에 대해 내보내는 새 익스프레스 앱을 만듭니다. 이렇게하면 서로 분리 된 무한 수의 섹션을 가질 수 있으며 최소한의 코드가 사용됩니다. 새 앱이 나머지 섹션을 처리합니다. 이 패턴을 따르

app.use('/<section>', require(<path to the app for the requested section >)); 

그래서 귀하의 경우,이 같은 뭔가가 있어야합니다

./server/config/routes.js

app.use('/api', require('../route/api')); //handler for /api 
app.get(...) 

../route/api. JS

var express = require("express"); 
var app = module.exports = express(); 
app.use('/student', require('./student')); //handler for /api/student 
app.get(..); 

../route/student.js

var express = require("express"); 
var app = module.exports = express(); //No more handlers 
app.get('/:id', function(req, res){ //get api/student/1 
    res.send({student_id : req.params.id}); 
});