2010-06-11 75 views
3

我將很快開發移動應用程序(iPhone)和基於Web的應用程序(Django)。對於移動應用程序,我將創建一個REST api(很可能使用Django)從電話到服務器之間來回發送數據。我的基於web的應用程序應該是我api的消費者嗎?

當我開始創建基於web的版本時,只需將其創建爲api的任何其他客戶端即可。換句話說,移動應用程序和Web應用程序都將通過HTTP從外部API獲取數據。或者,基於Web的應用程序是否可以直接訪問api正在使用的數據庫,並以這種方式獲取數據?

回答

1

我會創建Web應用程序來爲移動客戶端提供API。也就是說,讓基於Web的應用程序直接訪問數據庫。這將簡化您的XML/JSON RESTful資源訪問。

4

將其分成三個「部分」。第一個使用Python API來操縱數據庫。第二個將您的REST API與您的Python API進行接口。第三次會談網絡並使用Python API。

1

我會說不,不要使用API​​的HTML版本。如果你設計好你的Django,那麼最終的代碼可能比使用HTML版本的API少。當老闆想要改變拼寫時,你也可以保留讓網頁設計師使用Django模板的能力。

我會建議嘗試爲您的iPhone應用程序定義一個基本應用程序來與之交互,然後在第二個應用程序中爲HTML版本進行擴展。 App1將擁有您的所有型號(包括業務邏輯),以及用於處理來自/來自iPhone的數據的views.py。然後創建App2,它使用App1.models,但創建它自己的views.py。如果運氣好的話,你會發現自己只能改變用於呈現輸出的模板,所以你可以通過將模板作爲參數來重用視圖。

例如:

App1.views:

def list(request, template="list.json"): 
    list = Model.objects.filter(deleted=False).filter(user=request.user) 
    list.reverse() 
    ## Lots of other logic to work on the list. 
    return render_to_response(template, {list: list,}) 

App2.views:

def list(request, template="list.html"): 
    return App1.views.list(request, template=template) 
0

我認爲這個問題的答案隨着時間的推移發生了變化。一年前,當被問到這樣做可能仍然太麻煩時,但現在我肯定會說是 - 使用您的API作爲基礎是明智的做法。隨着網站使用更多的HTML5和移動應用程序變得更加智能,讓所有的「UI」從同一個API層讀取/寫入真的很有意義。這將給你未來更多的靈活性。

相關問題