2017-08-08 49 views
2

我正在使用Swagger,Express和Node来定义和运行端点。 localhost/docs上的GET请求返回所有相关路由。但是,当我尝试在任何路线的GET请求,返回 “无法获取/ XXX”Swagger,Express和Node.js中的“无法获取/”

Index.js

'use strict'; 

var fs = require('fs'), 
path = require('path'), 


// Basic Setup new express 
http  = require('http'), 
express = require('express'), 
mysql = require('mysql'), 
parser = require('body-parser'); 


var swaggerTools = require('swagger-tools'); 
var jsyaml = require('js-yaml'); 



// Setup express 
var app = express(); 
app.use(parser.json()); 
app.use(parser.urlencoded({ extended: true })); 
app.set('port', process.env.PORT || 5000); 

// Database Connection 
var connection = mysql.createConnection({ 
    host  : 'localhost', 
    user  : 'root', 
    password : 'root', 
    database : 'sample_database' 
}); 
try { 
    connection.connect(); 
    console.log('Database connected!'); 

} catch(e) { 
    console.log('Database Connetion failed:' + e); 
} 

// swaggerRouter configuration 
var options = { 
    swaggerUi: path.join(__dirname, '/swagger.json'), 
    controllers: path.join(__dirname, './controllers'), 
    useStubs: process.env.NODE_ENV === 'development' // Conditionally turn on stubs (mock mode) 
}; 

// The Swagger document (require it, build it programmatically, fetch it from a URL, ...) 
var spec = fs.readFileSync(path.join(__dirname,'api/swagger.yaml'), 'utf8'); 
var swaggerDoc = jsyaml.safeLoad(spec); 

// Initialize the Swagger middleware 
swaggerTools.initializeMiddleware(swaggerDoc, function (middleware) { 

    // Interpret Swagger resources and attach metadata to request - must be first in swagger-tools middleware chain 
    app.use(middleware.swaggerMetadata()); 

    // Validate Swagger requests 
    app.use(middleware.swaggerValidator()); 

    // Route validated requests to appropriate controller 
    app.use(middleware.swaggerRouter(options)); 

    // Serve the Swagger documents and Swagger UI 
    app.use(middleware.swaggerUi()); 

    // Create server 
    http.createServer(app).listen(app.get('port'), function(){ 
    console.log('Server listening on port ' + app.get('port')); 
    }); 



}); 

虽然初始化中间件,我尝试使用:

app.use(express.static(__dirname + './controllers')); 

但是错误仍然存​​在。我认为这与路由有关,但我不确定错误在哪里。

的代码目录结构:

-my_app 
    | 
    +--controllers 
    | | 
    | +--user.js 
    | +--userService.js 
    +--index.js 

回答

0

尝试使用这种结构

require('./controllers/<your_routing_file>')(app); 

和类型的路线不index.js

相关问题