大家好,我在Sails.js中遇到的情况很特殊


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


  问题是 :
  
  
  即使没有Iam传递URL localhost:port/sponsor,也将创建新的发起人(应该抛出status:404),因为没有定义此类路由。
  然后,我删除了控制器方法“创建”,并尝试使用URL localhost:port/sponsor,奇怪的是它仍然有效!!!
  我收到的唯一错误是在cmd提示中说“ publishCreate()的无效用法::值必须有一个'id'代替...(传递的正文)”
  



我检查了我之前创建的其他其他API,一切都按照定义的路由正常工作,即。如果[网址不匹配路由==状态:404]

我想知道为什么会这样吗?

最佳答案

默认情况下,Sails.js默认情况下启用blueprints。这将在URL 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形式的逻辑,包括对排序,分页和过滤的支持。


最佳卡勒姆

07-28 10:11