在 Express 中,我的 View 代码必须遵循以下格式(我也使用 keystonejs CMS):
exports = module.exports = function(req, res) {
// view code
}
但是,当我创建返回 json 的 api 时,我必须返回一个函数:
exports = module.exports = function() {
return function(req, res) {
// api code
}
}
我可以通过正常路由以相同的方式调用两个端点,那么为什么我必须在 api 中返回一个函数,而不是在 View 代码中返回一个函数?
最佳答案
事实证明,这并非特定于 keystone。我的 API 路线是调用 Controller ,就像在接受参数的帖子上调用它一样。
帖子查看路线:
app.post('/home/:imgtype', routes.api.imgloader.uploadProfileImg(param));
在 http 正文中包含表单数据的 api 路由:
app.post('/postblurt', routes.api.blurtapi.postBlurt());
所以我所要做的就是删除 (),它执行函数并期望返回值。
app.post('/postblurt', routes.api.blurtapi.postBlurt);
我忽略了一件简单的事情:当使用参数调用路由时,您必须返回函数。
关于javascript - 为什么在调用 api 时必须返回一个函数,而在express(KeystoneJs)中调用 View Controller 时则不需要返回函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56530866/