我正在尝试设计一个HTTP API,调用者每次调用都会上传N对文件。我将利用一个玩具示例来指导讨论。
想象一下,我正在收集已经过修改的照片数据库。对于上传的每条记录,我需要两个文件:(1)原始照片,以及(2)篡改照片。我希望用户批量上传记录。对于此示例,我们假设用户将上传两条记录。
我考虑过两个选择:
嵌套表格:curl -F "record=@orig0.jpg,doc0.jpg" -F "record=@orig1.jpg,doc1.jpg"
这导致顶级表单部分包含记录,其中每个记录包含子表单部分作为照片文件。
优点:逻辑上准确。可以用卷曲来完成。
缺点:子表单部分没有字段名称。通过其他客户很难做到。
使用动态字段名称构建部件:
curl -F "record0_original=@orig0.jpg" -F "record0_doctored=@doc0.jpg" -F "record01_original=@orig1.jpg" -F "record1_doctored=@doc1.jpg"
优点:所有字段标签都存在且富有表现力。
缺点:使用动态字段名称来传递结构。
还有其他选择吗?是否存在用于指定多个二进制文件及其之间关系的既定设计模式?