【问题标题】:Designing REST - save big set of related entities设计 REST - 保存大量相关实体
【发布时间】:2015-08-25 19:01:41
【问题描述】:

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

我需要开发允许加载和编辑销售邮政编码列表的 REST API。

基本上我有两个选择:

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

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

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

并像数组一样提交邮政编码:

zip[]=90231,12341

这两种方式都有一些缺点。

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

问题

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

【问题讨论】:

    标签: json api rest http


    【解决方案1】:

    究竟什么是“相当大”?

    粗略估计,如果每个字符为 2 个字节,而您的邮政编码有 5 个字符,则每个代码为 10 个字节。假设US has 41,741 ZIP codes,在美国最坏的情况下,在所有国家/地区进行销售的推销员将需要大约 417,410 字节或 407.6 KB 的有效负载。

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

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

    【讨论】:

    • 那么,第二个选项是正常做法吗?我找不到任何人这样做的例子))
    • 当你上传一个文件时,你实际上是在做一个非常大的 POST,只是你使用多部分内容类型而不是 json。想象一下,您正在发布一个需要解析的文件。 weblogs.asp.net/jongalloway/large-file-uploads-in-asp-net
    猜你喜欢
    • 1970-01-01
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多