我们说我有这条路线
app.route('/upload').post(???);
有没有办法根据例如查询字符串路由到不同的控制器?
我知道我可以使用不同的端点,或者我可以使用" main"控制器作为一个继电器,带有一个开关盒到右侧控制器,但还有其他方法吗?
例如req.query.type === "x"
然后调用控制器x,但是如果
req.query.type === "y"
然后调用控制器y。
答案 0 :(得分:0)
这基本上就是我这样做的,但我渴望看到更好的实现:
// routes.js
router
.route('/upload')
.get(MyController.getUploads);
// MyController.js
export default class MyController {
static getUploads(req, res) {
if (req.params.id) {
UploadDao
.getSingle(req.params.id)
.then(upload => res.status(200).json(upload))
.catch(error => res.status(400).json(error));
} else if (req.query.search) {
UploadDao
.getFilteredList(req.query.search)
.then(uploads => res.status(200).json(uploads))
.catch(error => res.status(400).json(error));
} else {
UploadDao
.getAll()
.then(figures => res.status(200).json(figures))
.catch(error => res.status(400).json(error));
}
}
我想开始时会更好。