【发布时间】:2015-08-28 18:31:36
【问题描述】:
我有一个带有 GET、POST 和 DELETE 操作的 ASP.NET Web Api (1) 控制器。我从带有$resource 的Angular 1.2.0 RC3 应用程序中调用它。让我们调用控制器Foos。
我执行了一个返回 foo 列表的 GET:
GET http://localhost:55386/api/foos/123456/1 HTTP/1.1
Host: localhost:55386
Connection: keep-alive
Accept: application/json, text/plain, */*
Origin: null
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8,es;q=0.6
资源在哪里
/api/foos/clientId/recordId
我是说给我一个客户 x 的 foo 列表并记录 y
现在,我想从收到的 foo 列表中删除一个 foo,所以我调用 $delete:
$scope.delete = function(foo){
foo.$delete();
}
但是这会导致以下请求:
DELETE http://localhost:55386/api/foos/123456/1 HTTP/1.1
Host: localhost:55386
Connection: keep-alive
Accept: application/json, text/plain, */*
Origin: null
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8,es;q=0.6
这个删除显然是想删除整个 foo 列表,这是有道理的。
我的问题是,如何使用 Angular 的 $resource 删除单个 foo 而不在其自己的 GET 请求中获取每个 foo?
更新:
我可以在资源为foo/fooId 的情况下执行GET /api/foo/1,并使用等效的DELETE /api/foo/1 将其删除,但我想获取一个 foo 列表,而不是单独获取每个 foo。
【问题讨论】:
-
localhost:55386/api/foos/123456/1 不是 clientid=123456 和 recordid=1 吗?
-
所以我有点困惑怎么了?
-
我的问题是,使用 $resource,我如何使用 Angular 的 $resource 删除单个 foo 而无需在自己的 GET 请求中获取每个 foo?我已经更新了问题。
-
@sylwester,看看我的回答
标签: angularjs rest asp.net-web-api angularjs-resource