关于REST集合。我提供地址吗?

时间:2015-04-23 06:21:41

标签: rest restful-architecture

当您在REST集合上执行PUT时,是否应该提供集合中成员的地址?

对指定地址的狗进行PUT

[{"name":"sparky", "id":1}, {"name":"rusty", "id":2}]

...或

对没有指定地址的狗进行PUT

[{"name":"sparky"}, {"name":"rusty"}]

让服务器返回集合中新成员的位置。在我的情况下,我的表中的行ID。

1 个答案:

答案 0 :(得分:1)

如果要发送PUT来替换整个集合中的每个资源,则应发送全新/更新的实体。

  • 如果id是实体的一部分,您应该在实体内发送它,但是对于与URI无关的客户端(也就是"地址") element,因为客户端现在知道服务器如何构建URI
  • 如果id不是客户实体的一部分,则不应在实体内发送。

但这两种情况都是可能的,您的服务器可以同时接受这两种情况,重要的是集合上的PUT行为与所描述的here一样:

  

PUT方法请求将所包含的实体存储在提供的Request-URI下。

因此,如果您PUT /api/animals/dogs/,只能在/dogs/下找到这些狗而不是/cats/ PUT

  

如果Request-URI引用已经存在的资源,则所包含的实体应该被视为驻留在源服务器上的实体的修改版本

这意味着任何集合上的/animals/dogs/都会取消整个集合,并使用方法调用正文中给出的实体创建一个新集合。

  

如果Request-URI未指向现有资源[...],则源服务器可以使用该URI创建资源。

这意味着如果$http.get("http://192.168.3.9:8081/command=get?token").success(function(data){ console.log("token is: "+data); }).error(function(data, status, headers, config){ console.log("unable to find token"); console.log(data); console.log(status); console.log(headers); console.log(config); }); 为空,则应在那里创建一个新的集合。