我們目前在我們的網絡中有三個站點。一個用Ruby on Rails編寫,另外兩個用PHP編寫。所有這些網站都傾向於共享大量相同的數據和邏輯。我發現自己不得不重複我在PHP方面的許多工作。好像我們需要一個通用的內部API來整合這一點。我從來沒有建立過API,我有幾個問題。內部REST API
性能如果我打造的API作爲一個單獨的應用程序,它看起來這將是慢一倍。因爲它必須經歷API端的整個請求/響應循環,然後再通過公共應用程序端。有沒有辦法讓這個更快?或者,也許是另一種方法?
通過本地網絡訪問API如何通過本地網絡訪問API?我會在Apache中設置指向127.0.0.1的虛擬主機嗎?
活動資源在我的情況下(在rails端)是ActiveResource最好的方式去或有更好的選擇消費API?我也想知道驗證如何在公共方面起作用。 ActiveResource會重用驗證規則還是必須在公共方面重新創建它們?
API安全我在想,我就不必太擔心這個,現在因爲API只能(理想)通過本地網絡訪問。我在這個假設中糾正了嗎?
這是一個很好的答案。你能否談談我應該如何爲此設置DNS/Apache?簡單地爲api.mycompany.com創建一個DNS記錄並將A記錄創建爲127.0.0.1就足夠了嗎?或者,如果它指向服務器IP,並且防火牆中存在限制僅訪問該IP的規則,是否會影響性能?或者,它是否足夠聰明,知道IP是本地的,它將與127.0.0.1相同? – Andrew 2012-05-01 18:04:44
這實際上取決於您的網絡拓撲。如果你的兩個應用程序都位於同一個系統上,你可以很容易地將它們直接指向對方。如果您在Apache中使用某種形式的虛擬主機,那可能無法正確運行。如果是這種情況,您可能需要在本地系統上設置主機記錄以將其指向自身(即:在/ etc/hosts中,您將api.mycompany.com指向127.0.0.1)。 – 2012-05-01 19:41:24
至於防火牆問題 - 你可能需要檢查你的個人Linux發行版。例如,如果你在Ubuntu上,你將會使用UFW。如果你使用CentOS/RedHat等,你可能最終不得不直接使用iptables。就我個人而言,我認爲在這種特殊情況下iptables更容易處理。由於您主要阻止所有傳入您創建的API的流量。 – 2012-05-01 19:42:40