Express 4上的app.use('/ api')只呈现页面

我有以下几点:

app.js

... var api = require('./routes/api'); app.use('/', api); app.use('/api', api); 

./routes/api

 ... var router = express.Router(); router.get('/', passport.authenticate('bearer', { session: false }), function (req, res) { res.json({ msg: 'API is running' }); }); 

我将如何区分//api路线,以便我可以呈现一个页面,如果我在/和只返回JSON,如果我在/api

我正在考虑将函数传递给非API路线来呈现JSON响应,另一个函数传递给APIpath来显示JSON响应?

任何其他的方式来做到这一点,或者我只是泛泛而谈?

提前致谢。

你为什么要在同一个path文件上安装2个path

 var api = require('./routes/api'); app.use('/', api); app.use('/api', api); 

您可以使用:

 var api = require('./routes/api'); var index = require('./routes/index'); app.use('/', index); app.use('/api', api); 

现在,你可以在这两个文件中写你的路线。 /在索引文件中将被用于domain.com/ url,并且/ api文件中的/ route将被用于domain.com/api url。 现在,您可以根据需要以不同方式处理这两个请求。

您也可以在索引文件中指定两个路由(在这种情况下,您不需要创buildapi文件并将其挂载到path上)。 例如

 router.get('/', function( req, res ){ // code for / path here }); router.get('/api', function( req, res ){ // code for /api path here }); 

这真的取决于你想要的。

来自我的一个项目的示例:

我们在/client/下有前端,所以当我们使用res.redirect('/client/') ,你的HTML文件可能会是。

或者也许像res.render(view [, locals] [, callback])可以满足您的需求

看看Express Documentaion的资源有很多的可能性。