警告:网络编程的新手。我在帆项目中有以下内容:
// 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中查找和查找一些方法。这些不会触发GET / v1 / user /:id / video - 我猜是因为多对一关联的处理方式不同
创建自定义路线
在routes.js中// module.exports.routes = { ' get / user /:id / myGetVideo':' UserController.myGetVideo' }
由于命名空间,它不会触发任何内容,但它会按预期触发/ user /:id / myGetVideo。我不想在这里添加/ v1名称空间b / c,这将扩散并成为更改版本的问题。
那么,我如何覆盖我想要的方法,或者将它放在命名空间中?覆盖第一种方法看起来更干净,但是idk。
感谢您的帮助!
编辑:关于什么是REST API的更好实践的任何评论?
答案 0 :(得分:1)
使用通配符:
// in routes.js
module.exports.routes = { 'get /v*/user/:id/myGetVideo':'UserController.myGetVideo' }
如果前缀方案改变,则不是防弹的,但是足够好