【发布时间】:2011-08-09 12:18:02
【问题描述】:
我正在处理一个需要使用 REST 或 CMIS 上传文件的 Java 项目(这两种服务都可用)。我对这些 API 完全陌生,想问问哪一个更容易实现。 我不能在项目中使用外部库,所以我需要从头开始实现客户端。
注意:唯一的要求是上传文件。
提前致谢。
【问题讨论】:
我正在处理一个需要使用 REST 或 CMIS 上传文件的 Java 项目(这两种服务都可用)。我对这些 API 完全陌生,想问问哪一个更容易实现。 我不能在项目中使用外部库,所以我需要从头开始实现客户端。
注意:唯一的要求是上传文件。
提前致谢。
【问题讨论】:
内容管理互操作性服务 (CMIS) 规范的目标是提供一组服务来处理丰富的内容存储库。它为 ECM 应用程序提供了完整的规范,可以是 REST 或 SOAP。
CMIS 为控制文件夹、文档、关系和策略的操作提供规范。
我认为对于您的上传,使用 CMIS 就像用炸弹杀死苍蝇。
【讨论】:
虽然我承认我不了解 CMIS,但使用 REST 上传文件只是经典的 HTTP 文件上传,您将路径名解释为指示要更新或替换的资源。基本的 REST 用法会让你(一个 HTTP)GET(方法)作为“读取文件”,POST 作为“在选择新名称的同时创建文件”(通常在之后进行重定向,以便客户端可以找出名称选择),PUT 为“创建具有给定名称的文件或替换该文件的内容”,DELETE 为“删除文件”。此外,您不需要支持所有这些方法;做多少就做多少(但最好支持一些 GET 请求,即使只是为了让人们知道他们的上传工作)。
但是,在实施时,您希望在所有情况下都尽量避免将大部分文件数据保存在内存中;那不成比例。最好花时间实现流传输,这样您实际上不需要缓冲超过几千字节。您当然可以使用 REST/HTTP 来做到这一点。 (您甚至可以使用 MTOM 使用 SOAP 来实现,但这可能超出了您的范围……)
【讨论】:
rest 和cmis 标记的问题的相对数量,很有可能在很长一段时间之后才会有人在这方面做出回应。对完美知识的渴望已经足够,但能够更快地提供可行的解决方案始终是一种成功的方法;为您的等待设置时间框将确保您不会浪费时间。