我正在编写一个RESTful网络服务,并陷入两难境地,我找不到明确的答案。我需要创建一个bill
资源。我有两种方法,需要建议使用哪种方法和原因:
方法-1
构建一个大的JSON有效负载,让后端验证并创建嵌套资源。 JSON请求如下所示:
{
'type_id' : ,
'supply_state_id' : ,
'consumer' :
{
'name' : ,
'mobile_number' : ,
'address' :
{
'address1' : ,
'city' : ,
'zipcode' : ,
},
},
'consignee' :
{
'name' : ,
'mobile_number' : ,
'email' : ,
'gstin' : ,
'address' :
{
'address1' : ,
'city' : ,
'zipcode' :
}
},
'dated' : ,
}
请注意,上面的结构已达到二级嵌套,根据我的发现到目前为止并没有消化。
为了消除嵌套,我有一个替代方案,建议首先创建所有嵌套资源,然后在目标资源中使用它们的对象id
,即bill
。
方法-2
识别所有嵌套资源,然后在单独的API匹配中创建,使用他们的id
来创建最终/目标bill
资源
首先,我们使用json有效负载创建两个address
资源:
{
'address' :
{
'address1' : ,
'city' : ,
'zipcode' : ,
}
}
说它返回我们获得address_id
的响应,然后我们使用它来创建consumer
和consignee
资源:
消费者
{
'consumer' :
{
'account_id' : ,
'name' : ,
'mobile_number' : ,
'address_id' : ,
}
}
收货人,使用单独的address_id
{
'consignee' :
{
'name' : ,
'mobile_number' : ,
'email' : ,
'gstin' : ,
'address_id' : ,
}
}
现在我们使用上述请求中的consumer_id
和consignee_id
来创建所需的资源
{
'type_id' : ,
'supply_state_id' : ,
'consumer_id' : ,
'consignee_id' : ,
'dated' : ,
}
两种方法都有自己的PRO和CON而不是另一种。我将重点介绍主要内容:
方法-1:
方法-2:
请建议应采用何种方法以及原因。
如果可以的话,请回答以下问题:
答案 0 :(得分:0)
如果您的消费者或收货人或其他嵌套对象弹出多个账单,我更喜欢方法二,它可能稍微不那么可读,但您仍然会有某种消费者ID,所以我&#39 ; d说损失很小。
关于多次通话的事情,您只需要使用第一个账单发送consumer-creation-json,我猜你希望几次使用同一个消费者。