我想知道如何将Express中的所有api路由移到与routes.js
文件分开的单独server.js
文件中
我app.use()
为每个路由使用了很长的api路由列表。因此,每条路线都在其自己的文件中,例如movies.js
,movie.js
但是当我列出这些路线时,它会在server.js
所以我想从下面将api端点列表的一部分删除server.js
到一个routes.js
文件中。
这是我目前拥有的:
server.js
import path from 'path'
import express from 'express'
import webpack from 'webpack'
import webpackDevMiddleware from 'webpack-dev-middleware'
import webpackConfig from './webpack.config.dev'
const app = express();
/* api endpoints, can be many more, I want them in routes.js */
app.use('/api/movies', require('./src/api/routes/movies'))
app.use('/api/movie', require('./src/api/routes/movie'))
app.use(webpackDevMiddleware(webpack(webpackConfig), {
publicPath: webpackConfig.output.publicPath
}));
app.use('/public', express.static(__dirname + '/public'))
app.get('*', function(req, res) {
res.sendFile(path.join(__dirname, 'index.html'));
});
app.listen(3000, 'localhost', function (err) {
if (err) {
console.log(err);
return;
}
})
路线示例
电影.js
var express = require('express');
var request = require("request");
var router = express.Router();
router.get('/', function(req, res) {
res.json({})
});
module.exports = router;
您可以尝试使用以下模块化方法。定义具有每个功能逻辑的控制器文件。例如电影。
movieController.js
module.exports = {
getMovie : function(req, res){
//do something
},
getMovies : function(req, res){
//do something
},
postMovie : function(req, res){
//do something
}
}
然后,在路由文件中引用该控制器,然后简单地插入这些功能。
routes.js
var express = require('express');
var movieCtrl = require('./movieController');
var router = express.Router();
router.route('/movie').get(movieCtrl.getMovie);
router.route('/movie').post(movieCtrl.postMovie);
router.route('/movies').get(movieCtrl.getMovies);
module.exports = router;
并且,在app.js中,将路由安装到合适的位置,例如/ api
app.js
var routes = require('./routes');
app.use('/api', routes);
我有一个使用Node.js和Express构建的web应用程序。现在我想列出所有注册的路线及其适当的方法。 例如,如果我执行了 我想检索一个对象(或与之相当的东西),例如: 这可能吗?如果可能,如何实现? 更新:同时,我创建了一个名为get-routes的npm包,它从给定的应用程序中提取路由,解决了这个问题。目前,只支持Express4.x,但我想现在这是可以的。只是通知一下。
我在下面尝试将一个参数发送到单独的功能文件(通过下面的示例),但它没有按预期工作。 project.feature 删除项目。特色 低于异常 通用域名格式。凭直觉。空手道。例外KarateException:项目。功能:48-删除_项目。功能:11-状态代码为:404,预期为:200,响应时间:239,url:https://localhost:8080/project/#(id)响应:{“状态”
我使用部署在ActiveMQ服务内部的Apache Camel模块。 假设我使用Spring DSL并且在文件(简化版)中有路由定义(实现为): 接下来,我在其他XML文件(简化)中配置了骆驼上下文: 我希望使用IoC术语将来自的共享路由(ID=)声明为每个依赖项的实例,因此来自单个骆驼上下文(ID=、、)的每条路由都应该使用该共享路由的自己的实例(ID=),具有单独的内部状态和bean实例等。
问题内容: 我的Express应用上有一条路线如下: 该ID始终是数字。但是,此路线目前与其他条件匹配,例如。 我想我希望从中得到两点: 仅在ID为数字时使用此路由,并且 仅当尚未为该特定参数定义路线时(例如与冲突)。 能做到吗? 问题答案: 扩展Marius的答案,您可以提供正则表达式和参数名称:
我有一个名为“bluetoothIn”的处理程序,我想使用HandlerThread类将其传递给一个单独的循环器,该类将提供循环器。然而,我需要将结果从“handleMessage(Message msg)”发回UI线程,因为我不能修改除主线程之外的其他线程的UI元素。 这是我的代码:
问题内容: 我有2个FileHandlers可以写出两个单独的文件,并且发生的I / O数量使我的应用程序速度大大降低: 我决定让FileHandlers在单独的线程上运行。 由于它们位于单独的线程上,因此我需要一个“队列”概念,以便这些单独的线程可以轮询此队列并打印出所有传入消息。 我已经对消息进行了预格式化,以便所使用的任何参数在它们实际到达FileHandler中的打印输出之前都不会更改。