REST API设计考虑因素

时间:2014-07-02 13:52:56

标签: php rest architecture request

我们正在为外部合作伙伴构建此REST API层,其架构如下:

  • 我们将在我们的存储服务器上使用PHP构建一堆REST API脚本。
  • 合作伙伴将通过转移请求点击我们的API
  • 我们将获取与该转移请求相关的客户数据文件,并将其推送到合作伙伴的服务器。

我们遇到的问题是请求的数据文件。一个传输请求可以请求数百个数据文件。

理想情况下,我们希望从合作伙伴那里获得转移的单一请求。 (一个将要传输所有数据文件的请求)。

另一种方式是每个数据文件是一个单独的请求,因此一百个文件的一个订单将有100个请求。这将有额外的来回流量以及每个文件的个别通知,这可能很麻烦。

所以我的问题是 - 如何将请求格式化为REST API以检索超过100个对象的集合?如果我要求合作伙伴发布一个带有数据文件名的txt文件,那么技术上不会是REST,对吧?解决这个问题的理想方法是什么?

2 个答案:

答案 0 :(得分:1)

客户端应该使用单个Json,XML或List发送所有图像请求。这可以在Web API方法中解析,并将结果提供给调用者。

答案 1 :(得分:1)

听起来您需要与REST响应分开处理实际的文件传输,无论您如何构建实际的API调用。我建议允许在单个API调用中包含任意数量的文件,正如您所提到的,这可以减少要处理的流量,并使您的API更易于用于客户端。这确实为每个请求提供了大的有效负载(例如,请求几千个文件的单个调用可能最多可达1MB的数据),但您可以根据需要调整每个请求的最大文件数上限。因此,您的API将接受文件传输请求,然后可能将它们插入到待处理文件传输的队列中。这允许您单独扩展API和文件传输系统,根据需要管理每个系统的负载。例如,如果传输系统速度变慢,您仍然可以通过REST API接受请求,而不会使系统过载。示例JSON结构如下所示:

{
  files: [ { filepath: /path/to/file, height: 35, width: 100, type: image/jpeg  },
     { filepath: /path/to/file, height: 35, width: 100, type: image/jpeg  }, ]

}