私はアイデアが一緒に含まれているAPIの各部分を維持することである次のような構造エクスプレスルーティング別離
src
|-app.js
|-api
|-v1
|-index.js
|-users
|-routes.js
|-controller.js
|-tests.js
|-currency
|-routes.js
|-controller.js
|-tests.js
を持つようにセットアップに私の急行ルーティングをしようとしています。
index.jsは基本的に、それが所属するディレクトリのサブフォルダ内のすべてのroutes.jsファイルを識別し、必要に応じてエクスプレスルータに要求し、app.jsを適切なバージョンとして必要とします。 API。私はそれをデバッグしようとしました
app.js
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
/*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;
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にアクセスしようとすると、私は次のよう{ "メッセージ": "Not Found" や "エラー":{ "ステータス":404}}取得します。
誰でも意見や提案があります。
おかげ
ポール私が見ることができるものから、
が、私はそれを得ました。助けてくれてありがとう。私はそれを見ることができませんでした。 –