目前我們網站呢有行動端(IOS, ANDROID, PC, TV)四個端,然後呢除了PC端,其他端都是透過api json資料格式存取取得資料的,但是PC端不是,除非例如一些列表頁啊等是採用api的,其他的PC 頁面都是在渲染頁面的時候有後台直接產生的。然後我們現在遇到的問題是,這四個端現在需要的介面是不以言的,即使介面一樣,那麼資料結構或說欄位是不一樣的,這個該怎麼處理呢?目前我們的做法是服務端採用的MVC模型,外加一個Lib函式庫,然後對於介面的話只是在控制器呼叫lib裡面的class和方法,對於pc的話我們實作了一個簡單的標籤,其實也就是間接的訪問class,例如我要取得使用者清單在提供家口的控制器中這樣子:
<code>// ..... $userList = User::getList() return $this->success($userList);</code>
那麼在PC端的頁面的話 就在模板上這麼寫:
<code>{{ userlist = Tag_User_getList() }} // ....</code>
基本上就是這樣子的一個結構,但是這樣子很有弊端,比如沒辦法把PC端跟移動端分開不熟,其次,像移動端要的數據,PC端不一定要,反之一樣,可能造成讀拿一些用不到的數據等等吧,
那我想問像一些大的專案他們是怎麼解決這個問題的呢?如 淘寶啊 京東啊等
目前我們網站呢有行動端(IOS, ANDROID, PC, TV)四個端,然後呢除了PC端,其他端都是透過api json資料格式存取取得資料的,但是PC端不是,除非例如一些列表頁啊等是採用api的,其他的PC 頁面都是在渲染頁面的時候有後台直接產生的。然後我們現在遇到的問題是,這四個端現在需要的介面是不以言的,即使介面一樣,那麼資料結構或說欄位是不一樣的,這個該怎麼處理呢?目前我們的做法是服務端採用的MVC模型,外加一個Lib函式庫,然後對於介面的話只是在控制器呼叫lib裡面的class和方法,對於pc的話我們實作了一個簡單的標籤,其實也就是間接的訪問class,例如我要取得使用者清單在提供家口的控制器中這樣子:
<code>// ..... $userList = User::getList() return $this->success($userList);</code>
那麼在PC端的頁面的話 就在模板上這麼寫:
<code>{{ userlist = Tag_User_getList() }} // ....</code>
基本上就是這樣子的一個結構,但是這樣子很有弊端,比如沒辦法把PC端跟移動端分開不熟,其次,像移動端要的數據,PC端不一定要,反之一樣,可能造成讀拿一些用不到的數據等等吧,
那我想問像一些大的專案他們是怎麼解決這個問題的呢?如 淘寶啊 京東啊等
你這麼說,完全不知道你們的網站是怎麼回事?好像是4個網站硬捏到一起去了。既然各走各的接口,幹嘛要統一接口呢?如果目前資料一致性達到了,那就別在意介面問題了,大改動是不可能了。在介面處把不需要的欄位過濾掉就ok了。再深入的事就不要做了,本來就亂糟糟,越改越亂。
個人覺得api接口在設計的時候盡量做到標準化....一套接口,多端調用。