如何处理 CREATE 和 DUPLICATE 的 CRUD 操作
How to handle CRUD operations for CREATE and DUPLICATE
我有一个通过 CRUD api 获取 Action 对象的接口。要首先创建一个 Action,您必须调用我的 CreateAction() 工厂方法。
要duplicate 但是,我应该让用户调用一个duplicate 方法吗?客户端可以简单地复制每个字段,但可以稍后添加字段,而客户端不会知道它们。
现在我只是让客户端调用 Create 来获取第二个实例,然后复制除名称之外的所有内容。这样可行。但感觉不对,因为对象可能会进化,而客户端只会复制它知道的字段。
But it feels wrong because the object could evolve and the client would only be copying fields it knew about.
这种感觉真好,好好培养吧。
The client can trivially duplicate each field, but fields could be added later and the client wouldn't know about them.
想一想如何在浏览器中处理网页 运行。
客户可能会获取一些资源,然后四处寻找允许客户请求副本的功能可见性。这可能看起来像一个新资源的 link,它会向客户呈现一个表单。当客户端提交表单时,该消息会向服务器传达创建副本的请求。
作为一个集成协议,客户端部分看起来像
- 获取原始资源的表示
- 寻找可以访问复制表格的link,然后按照它
- 查找表格,然后提交
要点一:如果你不希望客户端复制资源,你只需从表示中删除link。
要点二:您可以在表单中添加可编辑的内容,这将允许了解语义的客户进行自己的更改。不理解语义的愚蠢客户端将忽略这些字段,因此您需要确保提供保留向后兼容性的默认值。
我有一个通过 CRUD api 获取 Action 对象的接口。要首先创建一个 Action,您必须调用我的 CreateAction() 工厂方法。
要duplicate 但是,我应该让用户调用一个duplicate 方法吗?客户端可以简单地复制每个字段,但可以稍后添加字段,而客户端不会知道它们。
现在我只是让客户端调用 Create 来获取第二个实例,然后复制除名称之外的所有内容。这样可行。但感觉不对,因为对象可能会进化,而客户端只会复制它知道的字段。
But it feels wrong because the object could evolve and the client would only be copying fields it knew about.
这种感觉真好,好好培养吧。
The client can trivially duplicate each field, but fields could be added later and the client wouldn't know about them.
想一想如何在浏览器中处理网页 运行。
客户可能会获取一些资源,然后四处寻找允许客户请求副本的功能可见性。这可能看起来像一个新资源的 link,它会向客户呈现一个表单。当客户端提交表单时,该消息会向服务器传达创建副本的请求。
作为一个集成协议,客户端部分看起来像
- 获取原始资源的表示
- 寻找可以访问复制表格的link,然后按照它
- 查找表格,然后提交
要点一:如果你不希望客户端复制资源,你只需从表示中删除link。
要点二:您可以在表单中添加可编辑的内容,这将允许了解语义的客户进行自己的更改。不理解语义的愚蠢客户端将忽略这些字段,因此您需要确保提供保留向后兼容性的默认值。