Javascript 何时使用补丁并放入AngularJS
Javascript 何时使用补丁并放入AngularJS,javascript,angularjs,rest,api,Javascript,Angularjs,Rest,Api,PATCH用于更新现有资源的部分信息,PUT用于将该资源的旧信息替换为新信息。现在,这个概念应该如何在AngularJS中实现 一种可能的方法是: 在控制器上,计算用户通过表单更改的字段数,并将阈值设置为50%,即如果用户更新的表单字段超过50%,则调用$http.put,或者调用$http.patch 是否有任何标准方法来应用此概念,或者上述方法也是正确的方向?PUT用于创建、发布到更新,请参见 您可以使用补丁进行非常特定的更新,例如,如果某个资源的某些信息已缓存,而另一个未缓存,则可以使用补
PATCH
用于更新现有资源的部分信息,PUT
用于将该资源的旧信息替换为新信息。现在,这个概念应该如何在AngularJS中实现
一种可能的方法是:
在控制器上,计算用户通过表单更改的字段数,并将阈值设置为50%,即如果用户更新的表单字段超过50%,则调用$http.put
,或者调用$http.patch
是否有任何标准方法来应用此概念,或者上述方法也是正确的方向?PUT用于创建、发布到更新,请参见 您可以使用补丁进行非常特定的更新,例如,如果某个资源的某些信息已缓存,而另一个未缓存,则可以使用补丁并单独放置,以明确区分哪一个将导致缓存刷新 另一种想法是更新与其他资源有关系的复杂资源 补丁可以用来将关系添加到现有的关系中,而POST将覆盖整个列表 老实说,我通常使用PUT来创建,但我不允许用PUT覆盖现有的实体,只允许POST来更新 我基本上只是部分遵循HTTP,因为:
- 即使只是部分,看到PUT/POST/GET用法的人也会期望它执行相应的操作。它使我的代码更具可读性
- 完全实施它可能需要相当长的时间,但对我正在做的事情没有任何好处
- 通常,在我所做的UI中,创建和修改是两个具有不同权限的分离屏幕的一部分,使用两个分离的方法+URL可以仅通过配置而不是代码分别对每个屏幕应用权限限制。请注意,如果您使用POST xxx创建和POST xxx/[id]更新,则您有两个不同的URL
- 使用
在资源集合上创建资源。e、 g.POST
的两个请求将导致创建POST/v1/cars
和/v1/cars/1
/v1/cars/2
- 使用
更新资源属性,最理想的情况是当所有属性都在更改时,即使它们保持相同的值。请求主体(有效负载)应该包括所有属性。PUT是幂等的,这意味着如果使用相同的请求主体(有效载荷)发出两个请求PUT
,它将生成标识符为1的汽车,并用属性进行更新。N相同数量的请求以相同的更新/修改实体表示形式结束李>PUT/v1/cars/1
- 使用
对资源执行部分修改。所以,如果你只是更新了1号车的品牌和型号,而不是价格,那么补丁在这里是理想的,只要API支持它PATCH
阅读更多信息,当您只发送一组更改时,我一直认为修补程序是合适的;当您发送完整的实体时,发布补丁程序。例如,在过去的一个项目中,我们使用补丁进行所有更新,因为我们有一个安全模型,这意味着在大多数情况下,我们不会向客户端发送所有字段。从技术上讲,它一直是一个三角洲,这就是关键所在,我试图找出一些合适的例子。考虑到除了insert only字段外,我总是发送整个对象,所以我自己也不需要补丁。PUT和POST的区别在于PUT是幂等的。具有相同负载的多个PUT请求会导致相同的更新实体,而不是POST,其中多个POST请求会导致多个副作用,如创建多个条目。我不认为这篇文章适合更新。修补程序/放置程序是用于该作业的程序。综上所述,如果你要遵循每个动词/请求的用途,那么实际上,你可以让这些请求做任何事情:比如POST做更新。POST是创建和放置,补丁是更新。PUT是幂等的,POST不是。PUT不能用于创建资源。补丁用于对资源进行部分更新。PUT始终替换整个资源。请不要把这些混为一谈。@SahilBabbar您的问题中没有提到可伸缩性,我也没有看到任何需要区分PUT和PATCH以实现可伸缩性的东西,除了一些即使是这样也可能不需要的微优化。好吧,但是您如何看待计算的想法,无论是部分更改还是完全更改,在前端?如果支持修补程序,则不支持