【发布时间】:2012-10-27 12:26:46
【问题描述】:
我想使用 $resource 来调用我的 RESTful Web 服务(我仍在努力),但我想先看看我的 AngularJS 脚本是否正确。
待办事项 DTO 有:{id, order, content, done}
:cmd 这样我就可以调用api/1/todo/reset 来清除数据库中的待办事项表。
这是我理解的注释代码:
function TodoService($resource) {
var src = $resource('api/1/todo/:id:cmd',
{id: "@id", cmd: "@cmd"}, //parameters default
{
ListTodos: { method: "GET", params: {} },
GetTodo: { method: "GET", params: { id: 0 } },
CreateTodo: { method: "POST", params: { content: "", order: 0, done: false } },
UpdateTodo: { method: "PATCH", params: { /*...*/ } },
DeleteTodo: { method: "DELETE", params: { id: 0 } },
ResetTodos: { method: "GET", params: { cmd: "reset" } },
});
//Usage:
//GET without ID
//it calls -> api/1/todo
src.ListTodos();
//GET with ID
//it calls -> api/1/todo/4
src.GetTodo({ id: 4 });
//POST with content, order, done
//it calls -> api/1/todo
src.CreateTodo({ content: "learn Javascript", order: 1, done: false });
//UPDATE content only
//it calls -> api/1/todo/5
src.UpdateTodo({ id: 5, content: "learn AngularJS" });
//UPDATE done only
//it calls -> api/1/todo/5
src.UpdateTodo({ id: 5, done: true });
//RESET with cmd
//it calls -> api/1/todo/reset
src.ResetTodos();
}
我不确定的一件事是 PATCH 方法,我不想更新所有内容,我可以只更新一个字段吗?我是否正确构建了这段代码?
【问题讨论】:
-
看起来您正在使用 $resource 作为基本的 $http 服务。 $resource 更多的是用于从 RESTful 数据源获取对象,对其进行操作,然后使用
obj.save()将其发送回。您可以使用基本的 $http 实现来做您想做的事情。 -
@blesh 当他想与他的 RESTful web 服务通信时,为什么不应该使用 $resource 呢?正如你所说,这不正是它的目的吗?
-
它会寻找我,但我会将 $resource 定义为服务并注入它。如果需要,这使您可以在以后轻松地在其他地方重复使用它。
-
@Flek 好吧,如果他想要,他可以像 $http 一样使用 $resource。但这并不是它的真正用途。
-
嗯,这不是一个真正的“问题”,每个人说。更重要的是,他没有利用 RESTful api 以及 $resource 开箱即用可以为您做的所有事情。
标签: javascript rest angularjs