2012-07-27 77 views
5

所以,我最近一直在閱讀很多關於SOA的內容,並一直試圖實現一些有用的東西。我已經從一個簡單的博客開始,創建了RESTful API。到現在爲止還挺好。它完美的作品。但是,在編寫將使用RESTful API的Web界面時,我已經開始關閉我的頭髮了。我不知道我是否做對了。PHP應用程序中適當的RESTful SOA方法?

例如,Web界面有一個管理面板。該管理面板通過file_get_contents和流選項向API發送HTTP請求。現在,API是localhost,也是web界面,但是整個過程有點慢。這是正確的嗎?這是實施SOA的正確方法嗎?另外,我正在處理一些重複驗證的代碼。我應該在哪裏驗證數據?在API或Web界面?什麼是最好的方法?

歡迎提示,教程,特別是書籍。這是使用建立在Symfony組件之上的Silex實現的。

+1

只是在這裏大聲思考。 Web Interface通過本地主機託管,因此服務器上的API沒有多少變化,除了請求數量通常增加,並且沒有互聯網可以遍歷。您的計算機在您離開網卡之前正在將請求循環回到您的位置。 更多的想法。如果API在服務自己的網頁之外有任何用處,那麼我會在API中構建數據驗證。這樣你就可以發佈給API本身和網站的用戶。 – Kevin 2012-07-28 02:47:28

回答

1

這正是我如何做到的。儘管與localhost的連接起初可能看起來是一種開銷,但它是一項功能,因爲您已準備好將您的Web界面應用程序部署到任何位置,並仍然使用您的API,這可能在任何地方。當然,你會把一些SSL放在這個上面。

至於驗證,您應該在API上進行驗證,並返回HTTP status codes(例如,對於無效參數的「400錯誤請求」)。這樣,任何其他客戶端都可以解釋來自API的響應,並將其視爲顯示他們想要的方式。在您的Web界面的情況下,基於HTTP狀態代碼的漂亮的小錯誤消息。

您還面臨哪些其他問題?而且,就一般的SOA架構而言,this book非常好。

+0

雖然我原則上同意,但如果您知道您的API與您的前端位於同一個框中,則應該嘗試在相同的執行過程中調用它以節省引導資源和連接開銷。顯然,本地和遠程之間的切換應儘可能無縫。使用客戶端對象來抽象可以實現這一點。 – 2013-01-25 14:10:32

相關問題