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的资源有很多的可能性。