node.js - 覆盖 sails GET 多对一蓝图

标签 node.js rest routes sails.js

警告:网络编程新手。我在 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

所以我尝试了以下方法:

  1. VideoController.js 和 UserController.js 中的 find 和 findOne 方法。这些不会触发 GET/v1/user/:id/video - 我猜是因为多对一关联的处理方式不同

  2. 创建自定义路线

    //在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/

相关文章:

java - 有没有一种方法可以使用 Jersey Clinet 从客户端调用 REST 服务上的 HTTP PATCH

go - 如何在 gorilla Mux的Get Subrouter中将特定中间件用于特定路由

Angular 组件没有被破坏

javascript - MongoDB 将 [{k1 :v1}, {k2:v2}] 转换为 {v1: v2}

node.js - Sequelize REST API 生成器

node.js - 构建 :Cannot find type definition file for 'node'

ios - 从 Swift 函数中的异步调用返回数据

java - 在 Spring 通过响应返回组的最佳方式

node.js - "Blocks your chain on reading and parsing the HTTP request body"是什么意思?

php - Laravel - 与软删除数据的隐式路由模型绑定(bind)