无法在SailJS

时间:2017-06-06 18:17:13

标签: javascript node.js rest api sails.js

首先,各种依赖的版本
Ubuntu - 15.04
NodeJS - 6.10.3
NPM - 3.10.10
- 0.12.13

其次,我做了什么:
1.全球安装的帆 2.在目录/var/www中,运行命令sails new app
3.在UserController.js中创建了文件api/controllers/v1 4.在User.js

中创建了文件api/models

UserController.js

的代码
module.exports = {

  findOne: function(req, res) {

    return res.send("Hello World!!! User -> findOne");
  },

  login: function(req, res) {

    return res.send("Hello World!!! User -> login");
  }
}

User.js

的代码
module.exports = {}

现在,当我使用sails lift启动服务器时,会发生什么:

我知道我听起来很傻,但我认为这可能是因为我没有使用Sails的 Generator 功能。那么,这就是我接下来做的事情:sails generate api v1/Product。此命令后的文件结构如下:

api  
|-- controllers  
    |-- v1  
        |-- UserController.js
    |-- V1  
        |-- ProductController.js
|-- models  
    |-- User.js  
    |-- V1  
        |-- Product.js  

我在ProductController.js中编写了类似的代码,就像我在UserController.js中所做的那样,我预计现在Product API应该可以运行,但结果与/v1/user/1的情况相同。

根据SailJS Blueprint API,这应该有效。那么,任何人都可以解释为什么会这样,我怎样才能使 /v1/user/1 /v1/user/login 按预期工作。

1 个答案:

答案 0 :(得分:1)

您有两种方法可以实现这一目标。第一个选项是将restPrefix设置为/v1内的config/blueprints.js

  

控制器上所有REST蓝图路由的可选安装路径,它不包括actionsshortcuts路由。   这使您可以利用REST蓝图路由,即使您需要命名RESTful API方法

现在使用相同的目录结构,即/controllers/v1/UserController.js/models/User.js,您应该能够同时访问/loginfindOne方法。

第二个选项是将prefix设置为/v1 config/blueprints.js

  

控制器上所有蓝图路径的可选安装路径,包括restactionsshortcuts。   这使您可以利用蓝图路由,即使您需要命名API方法。   (注意:这仅适用于蓝图自动布线,而不适用于sails.config.routes

的手动路线

现在目录结构为/controllers/UserController.js/models/User.js。您已为您设置映射/v1

另一方面,您可以完全关闭蓝图路线并在/config/routes.js内设置自己的路线。这将为您提供更大的灵活性,您还可以在environment

中拥有config/env/[your_env].js个特定路线