【问题标题】:Sails.js, API executing without route configuration and controller.methodSails.js,API 在没有路由配置和 controller.method 的情况下执行
【发布时间】:2016-04-05 15:24:08
【问题描述】:

大家好,我在 Sails.js 中有一个特殊情况

  • 我在命令行中使用sails generate api sponsor 创建了名为“赞助商”的新模型和控制器
  • 然后我创建了 路由: post /create/new/sponsor' : 'SponsorController.create,在控制器内部创建了一个方法“create”并构建了相应的模型。
  • 现在,当我在邮递员中使用合法配置进行尝试时,一切正常,因为它应该可以工作。新的赞助商正在创建!!

    问题是:

    • 即使在我传递 URL localhost:port/sponsor 时,新的赞助商也会被创建(应该抛出 status:404),因为没有定义这样的路由。
    • 然后我删除了控制器方法“create”并尝试使用url localhost:port/sponsor,奇怪它仍然有效!!!!
    • 我得到的唯一错误是在 cmd-prompt 中说“invalid usage of publishCreate():: Values must have an 'id' instead ... (body pass )”李>

我检查了我之前创建的其他 API,一切都根据定义的路由正常工作,即。如果 [ url 不匹配路由 == status:404 ]

我想知道为什么会这样?

【问题讨论】:

    标签: javascript ruby-on-rails node.js sails.js


    【解决方案1】:

    默认情况下,Sails.js 默认启用blueprints。这会自动为您的控制器创建GET, PUT, POST, Delete 路由,网址为localhost:port/sponsor

    请参阅ConceptsReference 了解更多信息。

    可以关闭sails.js中的蓝图config/blueprints.js,取消注释actions并将其值设置为false

    actions: false,

    config/blueprints.js 的索引“rest:”也需要取消注释并设置为 false 以禁用自生成路由,即 localhost:port/sponsor

    rest: false,

    谢谢 @卡勒姆

    指出解决方案

    意识到这一点很重要,即使您自己没有定义这些,只要。存在与控制器同名的模型,Sails 将使用内置的 CRUD 进行响应。 JSON API 形式的逻辑,包括对排序、分页和过滤的支持。

    最佳卡勒姆

    【讨论】:

    • 我没有注释并且 action:false 并且 localhost:port/sponsor 仍然在工作
    • 我还想知道为什么其他 API 不受影响?他们的行为不像这个“赞助商”的行为
    • 我找到了解决方案并编辑了您的答案@Callum 请查看,因为它将帮助其他有类似问题的人。再次感谢您指出解决方案
    • 很高兴你能把这个整理好!我对“休息”属性的看法不好
    猜你喜欢
    • 1970-01-01
    • 2016-10-16
    • 2018-12-06
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多