2014-01-30 75 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」方法。