2010-06-11 78 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层读取/写入真的很有意义。这将给你未来更多的灵活性。

相关问题