警告:网络编程新手。我在 sails 项目中有以下内容:
// in models/User.js
// user has many videos
module.exports = {
attributes: {
videos: {
collection: 'video',
via: 'owner'
}
}
}
// in models/Video.js
// video has one user
module.exports = {
attributes: {
owner: {
model: 'user'
}
}
}
我正在使用带有/v1 前缀的 REST 蓝图。我试图覆盖 GET/v1/user/:id/video,或者创建一个自定义路由 GET/v1/user/:id/myGetVideo
所以我尝试了以下方法:
VideoController.js 和 UserController.js 中的 find 和 findOne 方法。这些不会触发 GET/v1/user/:id/video - 我猜是因为多对一关联的处理方式不同
创建自定义路线
//在routes.js中 module.exports.routes = { '获取/user/:id/myGetVideo': 'UserController.myGetVideo' }
由于命名空间的原因,这不会触发任何内容,但它确实会按预期触发/user/:id/myGetVideo 。我不想在这里添加/v1 命名空间,因为这会激增并成为更改版本的问题。
那么,我如何重写我想要的方法,或者将其放入命名空间中?覆盖第一个方法似乎更干净,但我不知道。
感谢您的帮助!
编辑:对于 REST API 的更好实践有何评论?
最佳答案
使用通配符得到它:
// in routes.js
module.exports.routes = { 'get /v*/user/:id/myGetVideo':'UserController.myGetVideo' }
如果前缀方案发生变化,则不是防弹的,但已经足够了
关于node.js - 覆盖 sails GET 多对一蓝图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29854481/