【问题标题】:Best practices when using an API (Apache Chemistry for Alfresco)使用 API 时的最佳实践(Alfresco 的 Apache Chemistry)
【发布时间】:2017-08-08 09:06:33
【问题描述】:

好的,所以我正在使用此 API https://github.com/donbalon4/API_Alfresco 从其他服务的其他 PHP 站点将文件上传到 Alfresco。我没有任何代码问题,只是在我使用它时,我想到了一些关于如何正确使用 API 的疑问。

我基本上是用它在我的 Alfresco Share 中创建一些目录。正如我所说,它运行良好,所以问题不在于我的代码,而在于如何正确使用 API(或任何一般的 API)。

首先,如果您查看该 API,您会看到每个方法是如何处理异常,即如果您尝试创建一个已经存在的文件夹,则会引发异常有适当的信息。

到目前为止,我只是使用 API 创建多个目录 到某个父根目录中,其中一些目录可能具有相同的名称。所以当他们这样做时,我根本不需要创建它们(因为目录已经存在)并且不需要抛出任何异常或显示给最终用户。

实现这一目标的最佳方法是什么?我不想修改 API,因为它会与它的真正含义相矛盾。如果每个人都修改了现有的 API,那么它就不再是 API。我可以简单地删除我正在使用的方法的异常处理,但我认为这不是一个好习惯。

我还意识到有一个名为 existsFolder()private 方法供内部使用。我也许可以将其更改为 public,这样我就可以在我的实际 PHP 代码中使用它来检查给定文件夹是否已经存在,但我也不知道这是否是一个好方法。

管理已经存在的目录的最佳方法是什么?将异常处理替换为向最终用户显示的文本消息?或者公开 existsFolder() 方法?我可能会遗漏任何其他想法吗?

【问题讨论】:

  • 为什么不使用 CMIS 与 Alfresco 对话? Apache Chemistry 提供了一个很好的客户端库,您可以从 PHP 中使用 - chemistry.apache.org/php/phpclient.html
  • 这正是我正在使用的! API_Alfresco(我在帖子中提供的链接)实际上使用了 Apache Chemistry。它只是让通过 CMIS(和 Apache Chemistry)对 Alfresco 执行基本文件/文件夹操作变得更加容易。

标签: apache api alfresco cmis chemistry


【解决方案1】:

如果 API 抛出异常,您的代码应该捕获它并采取相应措施。您的代码需要使用 try-catch 子句包围任何可能引发异常的 API 调用。例如,如果您的代码发现由于文件夹已经存在而引发异常并且您不在乎,则可以直接吞下异常并继续前进。

【讨论】:

  • 我同意,但在这种情况下,当使用包含特殊字符的 URL 发出 HTTP 请求时,API 会引发异常。我认为与其抛出异常,不如让 API 处理特殊字符并进行适当的字符串处理以确保 HTTP 请求不会失败。事实上,我在 API 中修复了该问题并启动了一个拉取请求,该请求现在与主分支合并,因此它现在已修复。简单地抛出异常对于 API 来说可能是一种非常好的方法,但我认为给程序员最好的体验并让他尽可能少做工作总是更好。
猜你喜欢
  • 2019-05-01
  • 2018-10-03
  • 1970-01-01
  • 2011-10-26
  • 1970-01-01
  • 1970-01-01
  • 2016-07-23
  • 2010-09-11
  • 2013-09-28
相关资源
最近更新 更多