我和另一位开发人员正在集成两个客户端专用且具有重复功能的系统,因此我们希望节省用户在两个系统中输入相同数据的时间。他的系统在客户端站点的本地主机上运行,而我的系统在云上运行,因此我们计划我的系统公开一个REST API供他的系统调用。在许多情况下,他的系统会将数据保存在我的系统上。例如,客户记录。
我看到了两种解决方法:
选项1:他向我的系统发送一个与新客户记录相关的ID(例如{client_name: 'Ballmart', id: 'FD23949fsad293fa2'}
),然后在他想引用该ID(例如添加新订单时)发送相同的ID:{ {1}}
选项2:他发送的客户记录没有ID,我用ID回应他的请求。他将我的ID保存在自己的数据库中,并在需要引用客户记录时将其发送出去。因此,他将发送{orderNumber: 2393, clientId: 'FD23949fsad293fa2'}
,我将回复{client_name: 'Ballmart'}
,然后他将像以前一样发送{id: 'FD23949fsad293fa2'}
来为客户记录新订单。
我的直觉是选择2更好,但我正在努力合理化原因。
他的系统更大,功能更多。他还是全职员工,而我的合同很快就会到期,这时他将需要承担更多管理我的系统的责任。
答案 0 :(得分:2)
我想说,负责数据的系统(“主”)是应该创建ID的系统(例如,避免重复或不为已取消的创建预订ID)
此外,第二个选项看起来更像是REST POST请求,现在它已成为理解API的一种标准
***通过评论讨论后:***
如果下一阶段是主系统拥有所有数据,请牢记这一点设计解决方案。 选择选项1,并且不要在主系统(尤其是数据结构)上进行集成,而以后必须从该位置删除它。
此外,您描述的交换看起来像是单向复制。在这种情况下,我认为目标表上的“来源”或“引用”列是最好的方法,尤其是在主系统必须在其他系统上复制的情况下。