2014-12-28 138 views
0

我正在構建一個簡單的搜索引擎,它將用戶提交的搜索查詢作爲輸入並輸出適當搜索結果的列表。搜索查詢最終會被髮送到第三方API,這會大大提高搜索結果的生成。第三方API調用的Web應用程序體系結構

有2種方法我可以處理這個工作流程:

  1. 我的服務器將用戶的請求,查詢第三方API,並將結果返回給用戶

  2. 將這一責任轉移到客戶端;客戶端直接查詢第三方API。

在這兩種方法之間進行選擇時需要注意什麼?

+0

回答這個問題是不太可能的。它太廣泛了。它提出了一般性意見,沒有具體說明具體任務的細節。那麼你如何期望得到一個真正有意義的答案呢? – arkascha

+1

[** Here **](http://programmers.stackexchange.com/a/138565)是您可以考慮的答案。這取決於您願意向外界展示多少API邏輯,以及您認爲它將以最快/最有效的方式運行的位置。 – blex

+2

就個人而言,我會使用選項#1。這使您在更改第三方API的情況下獲得最大的靈活性。而且,我總是傾向於實現任何業務邏輯/轉換服務器端 - 誰知道,您甚至可能最終需要執行相同搜索的其他UI。 –

回答

1

使用選項#1給你喜歡的幾個優點:

  • 您有一個觀點一個API。它爲您的架構帶來了一些清晰。
  • 你可能有很多頁面/窗口/任何使用相同的搜索API。如果第三方API更改或移動到另一個域,或者做了一些讓您更改代碼的內容,則可以在服務器上只修復一個API方法,而不是修復所有客戶端。
  • 如果第三方搜索引擎本身無法進行翻譯,您可以使用搜索查詢執行一些其他更改,例如翻譯它。形式上,你可以實現一些額外的邏輯。

使用選項#2可減輕服務器的負擔。

+1

順便說一句,如果你真的猶豫,你可以執行一個技巧:從你的客戶端調用你的服務器的API,但從服務器的API只是將客戶端的請求重定向到第三方API。 這樣可以減輕服務器的負擔,讓您可以在不更改客戶端代碼的情況下更改您的選擇。 – Alagunto