大家好,我在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
路由。
有关更多信息,请参见Concepts和Reference。
可以在sails.js config/blueprints.js
中关闭蓝图,取消注释actions
并将其值设置为false
actions: false,
另外,config/blueprints.js
的索引“ rest:”也需要取消注释并设置为false以禁用自身生成的路由,即localhost:port/sponsor
rest: false,
谢谢
@卡勒姆
指出解决方案
重要的是要认识到,即使您自己没有定义它们,只要有这么长时间。存在与控制器同名的模型,Sails将使用内置CRUD进行响应。 JSON API形式的逻辑,包括对排序,分页和过滤的支持。
最佳卡勒姆