我希望用户能够在我的应用程序中设置一个文档的段塞名称(URL),但我也需要一些控制,这样用户就不会相互覆盖。它需要是一个单独的调用(不与create
/update
集成),以便用户可以获得他们自己的鼻涕虫名称建议的视觉反馈。
因此,我创建了一个suggestSlug
API调用,该调用采用可选的slug
参数作为最终段塞名称的种子。
这是我的快车路线的样子:
app.get('/api/projects/suggestSlug/:slug', projects.suggestSlug);
app.get('/api/projects/suggestSlug', projects.suggestSlug);
app.get('/api/projects', projects.list);
app.get('/api/projects/:id', projects.show);
现在,我想在客户端(AngularJS)扩展ngResource来使用这个API:
angular.module('myapp.common').factory("projectModel", function ($resource) {
return $resource(
"/api/projects/:id",
{ id: "@id" },
{
update: { method: "PUT", params: { id: '@_id' } },
del: { method: "DELETE", params: { id: '@_id' } }
}
);
});
我如何扩展ngResource客户端来使用我的新API?
这是我的解决方案:添加一个单独的基于$http的方法到我的projectModel:
angular.module('myapp.common').factory("projectModel", function ($resource, $http) {
var projectModel = $resource(
"/api/projects/:id",
{ id: "@id" },
{
update: { method: "PUT", params: { id: '@_id' } },
del: { method: "DELETE", params: { id: '@_id' } }
}
);
projectModel.suggestSlug = function (slugSuggestion, callback) {
$http.get(
'/api/projects/suggestSlug/' + slugSuggestion
).success(callback).error(function(error) {
console.log('suggestSlug error:', error);
});
};
return projectModel;
});