最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

快速路由分离

运维笔记admin11浏览0评论

快速路由分离

快速路由分离

我正在尝试设置我的快速路由以具有以下结构

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作为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时,我收到以下{“message”:“Not Found”,“error”:{“status”:404}}。

回答如下:

从我所看到的,你是在定义/api/v1/currency/currency

api/v1/currency/routes.js应该定义这些路线:

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

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论