我想使用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