4
REST API-文件(即图像)处理-最佳做法
我们正在使用REST API开发服务器,该API接受和响应JSON。问题是,如果您需要将图像从客户端上传到服务器。 注意:我也正在谈论一个用例,其中实体(用户)可以具有多个文件(carPhoto,licensePhoto)并且还具有其他属性(名称,电子邮件...),但是当您创建新用户时,您不会这些图片不会发送,而是在注册过程后添加的。 我知道的解决方案,但每个解决方案都有一些缺陷 1.使用multipart / form-data代替JSON 很好:POST和PUT请求尽可能地是RESTful的,它们可以包含文本输入和文件。 缺点:它不再是JSON,与multipart / form-data相比,它更易于测试,调试等。 2.允许更新单独的文件 创建新用户的POST请求不允许添加图片(在我们的用例中,我一开始就这么说过),上传图片是通过PUT请求作为multipart / form-data完成的,例如,/ users / 4 / carPhoto 很好:所有内容(文件上传本身除外)都保留在JSON中,易于测试和调试(您可以记录完整的JSON请求而不必担心它们的长度) 缺点:这不直观,您不能一次过POST或PUT实体的所有变量,并且也可以将此地址/users/4/carPhoto更多地视为一个集合(REST API的标准用例如下/users/4/shipments)。通常,您不能(也不想)获取/放置实体的每个变量,例如users / 4 / name。您可以使用GET获取名称,并使用users / 4在PUT上更改名称。如果id后面有东西,通常是另一个集合,例如users / 4 / reviews 3.使用Base64 将其作为JSON发送,但使用Base64编码文件。 良好:与第一个解决方案相同,它是尽可能多的RESTful服务。 缺点:再次,测试和调试要差很多(主体可能具有兆字节的数据),客户端和服务器的大小和处理时间都增加了 我真的很想使用解决方案编号。2,但是它有其缺点...任何人都可以给我更好的洞察力,即“什么是最好的”解决方案? 我的目标是使RESTful服务包含尽可能多的标准,而我想使其尽可能简单。