我想使用Django构建API服务。基本的工作流程如下:在Django中构建API服务
首先,http请求转到http://mycompany.com/create?id=001&callback=http://callback.com
。它会在名称为001的服务器上创建一个文件夹。
其次,如果该文件夹不存在,它将被创建。您立即以XML格式获得回应。它看起来像:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<status>
<statusCode>0</statusCode>
<message>Success</message>
</status>
<group id="001"/>
</response>
最后,服务器将完成它的工作(即创建文件夹)。完成后,服务器会对提供的URL进行回调。
目前,我用
return render_to_response('create.xml', {'statusCode': statusCode,
'statusMessage': statusMessage,
'groupId': groupId,
}, mimetype = 'text/xml')
发送XML响应返回。我有一个XML模板,它有statusCode
,statusMessage
,groupId
占位符。
<?xml version="1.0" encoding="UTF-8"?>
<response>
<status>
<statusCode>{{ statusCode }}</statusCode>
<message>{{ statusMessage }}</message>
</status>
{% if not statusCode %}
<group id="{{ groupId }}"/>
{% endif %}
</response>
但这种方式我已经把第3步第2步之前,否则一步,如果是后return
声明3将不会被执行。
有人可以给我一些建议如何做到这一点?谢谢。
谢谢回答。是的,应该是'http://mycompany.com/create?params ...'我也在'url.py'中定义了URL。我的意思是渲染XML和创建文件夹是两个独立的步骤。我想先返回XML(紧接在HTTP请求之后),然后创建文件夹。应该在创建文件夹后进行回调。 – zihaoyu 2010-04-11 19:29:39
好的。你可能需要设计一些创意。如果您想在之后创建文件夹,您将需要某些待处理文件夹的队列。队列的数据必须在请求之间持续存在。您可能需要创建一个模型,例如FolderQueue,您可以在其中隐藏所有待创建的文件夹。因为它是一个完整的模型,所以它可以非常健壮并跟踪各种数据(创建它的人,创建时的名称,名称等等)。 可能不是最简单的,但它的强大,并仍然非常容易做到感谢orm。 – Koobz 2010-04-11 19:43:05
另一种方法是在会话中存储数据,但这是在寻求麻烦。使用队列方法,至少它有点惯用和自我记录,而不是一起欺骗;) – Koobz 2010-04-11 19:45:14