设计REST - 保存大量相关实体

时间:2015-08-25 19:01:42

标签: json api rest http

在我的系统中,我有一个实体(销售)可以为具有特定邮政编码的人提供服务。 因此,每个销售都可以将数千个邮政编码绑定到他的帐户。

我需要开发REST API,以便加载和编辑销售邮政编码列表。

基本上我有两个选择:

1)创建2个资源:Sales和SalesZip。提交销售数据,然后为每个支持的邮政编码汇总SalesZip记录。

2)创建销售实体,并加载支持的邮政编码列表,如下所示:

{
    id : 1,
    name : "John",
    zip : [
        "90231",
        "12341",
        ...
    ]
}

并提交类似数组的邮政编码:

zip[]=90231,12341

两种方式都有一些缺点。

如果使用第一个选项,我可能需要提交太多单独的HTTP请求。 如果使用第二个选项,我可能需要发送相当大的PUT / POST请求。

问题

我应该使用哪个选项? 设计此类功能的最佳实践是什么?

1 个答案:

答案 0 :(得分:1)

什么是“非常大”?

粗略估计,如果每个字符都是2个字节,并且您的邮政编码有5个字符,则每个代码为10个字节。假设US has 41,741 ZIP codes,在美国最糟糕的情况下,销售人员在全国销售,需要大约417,410字节或407.6千字节的有效载荷。

平均而言,销售员属于多少邮政编码?它是如何分布的?您多久收到一次这些要求?你可能会发现它毕竟不是那么糟糕。

没有足够的数据来做出决定,但似乎第二种选择并不差。