2014-01-30 52 views
0

我的问题很简单,我正在设计一个应用程序(在Ruby on Rails BTW),它也会有一个RESTful API。RESTful API讨论资源 - 图像下载

在应用程序的设计过程中,我遇到了什么是“下载图像”中的资源的问题。

我发现2种选择:

  1. 有一个名为ImagesController控制器和实际返回要下载的文件表演动作(GET请求)

  2. 有一个控制器名为ImageDownloadsController和。 (POST请求)

我选择第二个的原因是因为对于我来说,一个图像控制器wo的显示动作更有意义的是返回图片网址,以便在浏览器或模板上显示图片。

此外,因为当我设计的API,我认为它会更容易,更有意义,它匹配我的应用程序的大部分。我的意思是,API是忠实于我在APP上设计的。因此,API上的控制器操作与APP上的大部分操作相匹配。

我认为这可能是一个问题,为了设计的缘故,我的APP在ImagesController#show上返回一个文件,而在我的API上它返回一个URL。

相反,我想在我的APP上有一个名为ImageDownloadsController的控制器,其中create将返回该文件。并在我的API一个ImagesController哪里显示返回URL!我仍然不喜欢名为ImageDownload的资源!

我想听听你对此的想法,为什么你认为如果可能的话,一种方法比另一种更好。

回答

1

从期望的角度来看,如果我盲目地(没有RTM)开发一个客户端,如果我使用REST API使用该动词,那么我会期望获得一个映像,因为这是它的常用方式。

现在在你的情况下,你想偏离它,所以它匹配你的应用程序控制器。那很好,特别是如果你是唯一一个会使用REST API服务的人,但是如果其他人会为它开发客户端,那么我会选择你的第一个解决方案,如果你想一直使用REST方法的话。

1

我认为这取决于谁会使用您的API。

  • 如果您的API将由您的内部团队使用,请使用更符合您的应用程序体系结构的可测试性和解决方案。
  • 如果您的API将公开,那么您应该将您的API视为“面向开发人员的GUI”,并尽可能使其可用。实现这一目标的最佳方法之一是进行可用性研究 - 即向不同的开发人员询问他们期望用于下载图像的方法。

顺便说一句,我同意凯沙皇 - 如果我下载了一个图像,我会使用“GET”方法。