發出異步請求並不意味著只是與您自己的服務器端程序交互。其實也可以與一些公共 API,例如來自 Google 或 Amazon 的 API 進行通信,從而為 Web 應用程序增加您自己的腳本和服務器端程序所不能提供的更多功能。在本文中,Brett McLaughlin 教您如何向公共 API,例如 Google 提供的 API 發出請求並接收其響應。
到目前為止,這個系列只涉及到客戶機 Web 頁面向服務器端腳本和程序發出請求的情況。這就是大約 80% 到 90% 的 Ajax 應用程序(使用 XMLHttpRequest 對象的異步 Web 應用程序)的工作方式。然而,這種方法有很嚴重的局限性:您將受到自己才智和編程技能的限制,就算不是這樣,最起碼也要受到公司團隊中的程序員的才智和編程技能的限制。
有時候,您確實想實現一些功能,但是又不具備實現該目標所需的技術知識,幾乎總能遇到這種情況。也許您不知道某些語法,也許不知道如何找出適當的算法。還有些時候,您手頭上可能沒有用於滿足需求的數據或資源(無論是人力資源還是數據資源)。在這些情況下,也許您會想:"唉,要是我能使用其他人的代碼該多好啊!"本文就是要解決這個問題。
開放源碼腳本和程序 在論述本文的實際內容(在 Web 應用程序中使用公共 API)之前,有必要說一說開放源碼腳本和程序。淺顯地講,開放源碼 是用於描述可以在一定程度上免費在您自己的應用程序中使用和重用的代碼的一個術語。相關鏈接請參閱 參考資料。簡言之,您可以獲取別人編寫的開放源碼,然後將其放入自己的環境中,而不必為之付費,也不會受到(很多)限制。
如果使用開放源碼,那麼有時候需要為應用程序增加額外的文檔,或者將您對開放源碼程序或腳本作出的更改反饋給社區。不管如何使用這種程序,最終結果就是,您可以使用這麼一塊代碼:該代碼是您不必親自編寫的,或者,如果沒有大量的幫助和資源的話,就無法編寫該代碼,而您手頭上並沒有這些資源。諸如 Apache 之類的項目為利用他人完成的工作提供了方便 -- 不必擔心,他們還希望您使用他們的作品呢!
使用公共 API 很多時候,您會遇到非技術問題。您不需要幫助也能編寫某個腳本或某段代碼,然而,手頭上卻沒有所需的數據或資源。在這些情況下,即使有了教程或者開放源碼腳本,也還需要更多的東西。例如,考慮在 Web 頁面上增加一個搜索引擎的情況。這樣做的前提是您已經有了要搜索的數據 -- 但是,如果要搜索您公司或組織以外的數據,那麼該怎麼辦呢?
如果不是因為技術上的原因,而是因為數據而受到限制,那麼,一個公共 API 也許可以幫助您解決問題。公共 API 允許使用其他人的服務器上的程序並使用其他人的數據。通常,API 本身只定義如何與該程序交互。例如,通過一個用於 Google 搜索引擎的公共 API 可以發出搜索請求,但是實際上是由 Google 的代碼搜索 Google 的數據,然後將結果返回給您的程序。您不僅可以利用他人在編寫這些程序方面的技能,還可以利用遠遠超過您自己公司所能支持的數據。
使用 Google Ajax Search API 的准備工作 毋庸置疑,Google 仍然是在線時代極其重要的應用。上至老奶奶,下至四歲小孩,即使不理解網上的其它東西是怎麼回事,也一定知道 Google。Google 運行著如此流行、如此有用的搜索引擎,並且致力於提供(幾乎全部)免費的服務,所以毫不奇怪,它能提供可以在您自己的程序中使用的公共 API。在本節中,您將完成使用 Google API 的准備工作,並清楚地了解如何與 Google 進行異步應用程序會話。
從 Google 獲取開發者密鑰 本文著重討論 Google 的 Ajax Search API。通過訪問 Google Ajax Search API 主頁(如圖 1 所示),可以找到關於這個 API 的更多信息。
圖 1. Google 的 Ajax Search API 頁面
第一步是單擊 Sign up for a Google AJAX Search API key 鏈接。這時會進入另一個頁面,在此頁面上可以登記使用這個 Google API。您需要接受所有使用條款(我認為所有條款都沒有惡意)並提供您的應用程序所在 Web 站點的 URL(如圖 2 所示)。
圖 2. 登記使用 Google 的 Ajax Search API
閱讀完協議並勾選了復選框之後,輸入 URL,單擊 Generate API Key,等待一二秒鐘。此時必須登錄 Google,或者創建一個帳戶。這是一個相當標准的過程,您應該可以自己完成。完成上述操作後,可以看到一個回復頁面,其中給出了一個非常長的密鑰,並確認您的 URL,甚至還給出一個示例頁面。這個密鑰看上去類似於以下形式:
ABQIAAAAjtuhyCXrSHOFSz7zK0f8phSA9fWLQO3TbB2M9BRePlYkXeAu8lHeUgfgRs0eIWUaXg
Google 的 API 文檔
在開始使用獲得的密鑰之前,要花點時間閱讀一下 Google 的 API 文檔(在提供密鑰的頁面的底端有一個鏈接,本文的參考資料中也提供了該鏈接)。即使您通過本文有了很好的初步認識,仍然會發現 Google