2017-04-04 15 views
1

나는 다음과 같은 구조익스프레스 라우팅 seperation에

src 
|-app.js 
|-api 
    |-v1 
     |-index.js 
    |-users 
     |-routes.js 
     |-controller.js 
     |-tests.js 
    |-currency 
     |-routes.js 
     |-controller.js 
     |-tests.js 

아이디어가 함께 포함 된 API의 각 부분을 유지하는 것입니다을 가지고 설정 내 명시 적 라우팅을 시도하고있다.

기본적으로 index.js는 자신이 속한 디렉토리의 하위 폴더에있는 모든 routes.js 파일을 식별하고 필요할 경우 익스프레스 라우터에 필요하도록하고 app.js를 통해 필요한 적절한 버전으로 app.js에 입력해야합니다. api.

내가 그것을 디버깅을 시도했습니다

/*jslint node: true */ 
"use strict"; 

// ******************* 
// Currency Routes 
// ******************* 

var express = require('express'); 
var router = express.Router(); 

router.get('/currency', function (req, res) { 
    res.send('Currency List Page'); 
}); 

router.get('/currency/:id', function (req, res) { 
    res.send('Currency Page: ' + req.params.id); 
}); 

module.exports = router; 

app.use('/api/v1', require('./api/v1')); 

API/V1 /하는 index.js

/*jslint node: true */ 
"use strict"; 

var express = require('express'); 
var router = express.Router(); 
var fs = require('fs'); 

fs.readdirSync(__dirname).forEach(function(file) { 

    // Remove extension from file name 
    var basename = file.split('.')[0]; 

    // Only load files that aren't directories and aren't blacklisted 
    if (fs.lstatSync(__dirname + '/' + file).isDirectory()) { 
     console.log("api: " + '/' + basename + ' file: ./' + file + '/routes.js');  
     router.use('/' + basename, require('./' + file + '/routes.js')); 
    } 

}); 

module.exports = router; 

API/V1/통화/routes.js을 app.js DEBUG 모듈을 사용하면 express가 경로를 인식 할 수 있습니다.

C:\DevelopmentOE\Node\src>set DEBUG=express:* & node ./bin/www.js 
    express:application set "x-powered-by" to true +0ms 
    express:application set "etag" to 'weak' +3ms 
    express:application set "etag fn" to [Function: wetag] +2ms 
    express:application set "env" to 'development' +0ms 
    express:application set "query parser" to 'extended' +0ms 
    express:application set "query parser fn" to [Function: parseExtendedQueryString] +1ms 
    express:application set "subdomain offset" to 2 +0ms 
    express:application set "trust proxy" to false +0ms 
    express:application set "trust proxy fn" to [Function: trustNone] +1ms 
    express:application booting in development mode +0ms 
    express:application set "jsonp callback name" to 'callback' +0ms 
    express:router use '/' query +16ms 
    express:router:layer new '/' +0ms 
    express:router use '/' expressInit +1ms 
    express:router:layer new '/' +0ms 
    express:router use '/' jsonParser +0ms 
    express:router:layer new '/' +0ms 
    express:router use '/' urlencodedParser +4ms 
    express:router:layer new '/' +1ms 
api: /currency file: ./currency/routes.js 
    express:router:route new '/currency' +5ms 
    express:router:layer new '/currency' +1ms 
    express:router:route get '/currency' +0ms 
    express:router:layer new '/' +1ms 
    express:router:route new '/currency/:id' +0ms 
    express:router:layer new '/currency/:id' +1ms 
    express:router:route get '/currency/:id' +0ms 
    express:router:layer new '/' +0ms 
    express:router use '/currency' router +1ms 
    express:router:layer new '/currency' +0ms 
api: /users file: ./users/routes.js 
    express:router:route new '/user' +3ms 
    express:router:layer new '/user' +0ms 
    express:router:route get '/user' +1ms 
    express:router:layer new '/' +0ms 
    express:router:route new '/user/:id' +0ms 
    express:router:layer new '/user/:id' +0ms 
    express:router:route get '/user/:id' +1ms 
    express:router:layer new '/' +0ms 
    express:router use '/users' router +0ms 
    express:router:layer new '/users' +1ms 
    express:router use '/info' <anonymous> +0ms 
    express:router:layer new '/info' +1ms 
    express:router use '/api/v1' router +0ms 
    express:router:layer new '/api/v1' +0ms 
    express:router use '/' <anonymous> +1ms 
    express:router:layer new '/' +0ms 
    express:router use '/' <anonymous> +0ms 
    express:router:layer new '/' +1ms 
    express:application set "port" to 3000 +3ms 

그러나 나는 http://localhost:3000/api/v1/currency에 액세스하려고 할 때 다음과 같은 얻을 { "메시지": "찾을 수 없음"을, "오류": { "상태": 404}}.

누구나 아이디어/제안 사항이 있습니다.

감사

폴 내가 무엇을 볼 수에서

답변

1

, 당신은이 노선을 정의해야합니다 /api/v1/currency/currency

api/v1/currency/routes.js를 정의하고 있습니다 :

router.get('/', ...); 
router.get('/:id', ...); 
+0

내가 그것을 얻었다. 도와 주셔서 감사합니다. 나는 그것을 볼 수 없었다. –

관련 문제