将API添加到Django应用程序的最佳方法是什么?

时间:2009-06-30 15:56:17

标签: python django api django-models django-admin

我正在向Django CMS添加MetaWeblog API支持,并且我不太确定如何对应用程序进行分层。

我正在使用django_xmlrpc,它允许我映射到每个请求的参数化函数。这只是从服务函数(AddPage,EditPage等)调用django应用程序时挂钩的级别的一个案例

对于django-page-cms,我想很多django应用程序,业务逻辑和验证都包含在表单中。在这种情况下,有PageForm(forms.ModelForm)和PageAdmin(ModelAdmin),它们都包含大量的逻辑和验证。

如果我要构建一个API以允许维护页面和内容,这是否意味着我应该以编程方式创建和填充PageAdmin实例?然后捕获任何异常,并转换为他们的api等价物?或者这是一个坏主意 - 滥用什么形式的目的?

另一个选择是重构代码,以便将业务和逻辑保留在表单类之外。然后我会得到表单和api,两者都通过单独的业务逻辑。

还有其他选择吗?

什么是最好的解决方案?

2 个答案:

答案 0 :(得分:2)

Web服务API只是更多的URL。

这些WS API URL映射到查看函数。

WS视图函数处理GET和POST(可能还有PUT和DELETE)。

WS视图函数使用Forms和模型来实现目标。

在某种程度上,它就像一个管理界面。除此之外,没有HTML。

WS视图函数使用JSON消息或XML消息进行响应。

答案 1 :(得分:0)

似乎python没有提供开箱即用的功能。但是有一种叫做abc模块的东西:

我引用http://www.doughellmann.com/PyMOTW/abc/"通过定义抽象基类,您可以为一组子类定义通用API。此功能在第三方要提供实施的情况下特别有用。" => API的目标,定义合同。