用于指定文件对的RESTful HTTP API设计模式?

用于指定文件对的RESTful HTTP API设计模式?,rest,api,curl,restful-architecture,Rest,Api,Curl,Restful Architecture,我试图设计一个HTTP API,调用方可以在每次调用中上传N对文件。我将使用一个玩具示例来指导讨论 想象一下,我正在收集一个被篡改的照片数据库。对于每个上传的记录,我需要两个文件:(1)原始照片,(2)篡改的照片。我希望用户批量上传记录。对于本例,假设用户将上载两条记录 我考虑过两种选择: 嵌套表单:curl-F“record=@orig0.jpg,doc0.jpg”-F“record=@orig1.jpg,doc1.jpg” 这会产生包含记录的顶级表单部分,其中每个记录都包含子表单部分(即照片

我试图设计一个HTTP API,调用方可以在每次调用中上传N对文件。我将使用一个玩具示例来指导讨论

想象一下,我正在收集一个被篡改的照片数据库。对于每个上传的记录,我需要两个文件:(1)原始照片,(2)篡改的照片。我希望用户批量上传记录。对于本例,假设用户将上载两条记录

我考虑过两种选择:

  • 嵌套表单:
    curl-F“record=@orig0.jpg,doc0.jpg”-F“record=@orig1.jpg,doc1.jpg”

    这会产生包含记录的顶级表单部分,其中每个记录都包含子表单部分(即照片文件)

    优点:逻辑上准确。可以用卷曲来做

    缺点:子表单部分没有字段名。通过其他客户很难做到

  • 使用动态字段名形成零件:

    curl-F“record0\u original=@orig0.jpg”-F“record0\u doctored=@doc0.jpg”-F“record01\u original=@orig1.jpg”-F“record1\u doctored=@doc1.jpg”

    优点:所有字段标签都存在且富有表现力

    缺点:使用动态字段名传递结构


  • 还有别的选择吗?是否存在用于指定多个二进制文件及其之间关系的既定设计模式?

    当涉及到动态生成的字段名时,请记住,您仍然需要在后端对其进行解析,这也可能有问题。我宁愿选择第一种解决方案,也许是因为我使用spring,据我所知,这很容易做到。另外,我不知道任何已建立的模式。当涉及到动态生成的字段名时,请记住,您仍然需要在后端对其进行解析,这也可能有问题。我宁愿选择第一种解决方案,也许是因为我使用spring,据我所知,这很容易做到。而且,我不知道有什么既定的模式。