我的网络应用程序应该是我的api的消费者吗?

时间:2010-06-11 19:19:26

标签: django api

我将很快开发移动应用程序(iPhone)和基于Web的应用程序(Django)。对于移动应用程序,我将创建一个REST api(最有可能使用Django)从手机到服务器来回发送数据。

当我有时间创建基于Web的版本时,将它创建为api的任何其他客户端是有意义的。换句话说,移动应用程序和Web应用程序都将通过HTTP从外部API获取数据。或者基于Web的应用程序是否可以直接访问api正在使用的数据库并以这种方式获取其数据?

4 个答案:

答案 0 :(得分:4)

将其分成三个“部分”。第一个使用Python API来操作数据库。第二个是将REST API与Python API连接起来。第三个是讨论Web并使用Python API。

答案 1 :(得分:1)

我会创建Web应用程序来为移动客户端提供API。也就是说,让基于Web的应用程序直接访问数据库。这将简化您的XML / JSON RESTful资源访问。

答案 2 :(得分:1)

我会说不,不要将API用于HTML版本。如果你很好地设计了Django,那么最终可能会比使用HTML版本的API少得多。每当老板希望拼写更改某些内容时,您还可以保留让网页设计师使用Django模板的功能。

我建议您尝试为您的iPhone应用程序定义基本应用程序以进行交互,然后在HTML版本的第二个应用程序中进行扩展。 App1将包含所有模型(包括业务逻辑)和views.py,用于处理来自/来自iPhone的数据。然后创建使用App2的{​​{1}},但创建自己的App1.models。运气好的话,你会发现自己除了用于渲染输出的模板之外什么都不做更改,所以你可以通过传递模板作为参数来重用你的视图。

例如:

<强> App1.views:

views.py

<强> App2.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,})

答案 3 :(得分:0)

我认为这个问题的答案随着时间的推移而发生了变化。一年前被问到这样做可能仍然太麻烦,但现在我肯定会说是 - 使用你的API作为基础是聪明的事情。随着网站使用更多HTML5和移动应用程序变得更聪明,让所有“UI”从同一API层读/写是非常有意义的。这将为您提供更大的灵活性。