我被分配为使用Django构建的现有Web服务创建RESTful Android应用程序。
我目前的设计理念是让Android应用程序接收通常会发送到每个网址上的Django模板的数据的JSON版本。所以我的观点看起来像:
#The site stores and organizes user's medical experiences by allowing search of
# what treatments have been effective for a particular condition
treatment_for_condition = {'treatment' : treatment, 'condition' : condition}
if send_as_json :
return HttpResponse(json.dumps(treatment_for_condition),mimetype='application/json')
else:
t = loader.get_template('results.html')
return HttpResponse(t.render(treatment_for_condition))
有没有一种优雅的方法来设置“send_as_json”变量?我正在考虑以下两个策略:
1)将限定符添加到所有URL的末尾以便这样做 / condition / treatment /将返回一个网页 和 / condition / treatment /?json = true将返回一个JSON对象
2)创建一个子域json.treatmentreport.com,它将“send_as_json”变量设置为true,然后调度到与www域中相同的视图。
这些解决方案中的任何一个都可以优雅地实施吗?或者我是否完全以错误的方式解决这个问题?
答案 0 :(得分:2)
我读过您的问题,我认为不是建议修改现有设置的方法,而是先尝试回答问题的主题:
“为现有Web应用程序创建应用程序访问URL的优雅方法是什么?”
Piston是一个相对较小的Django应用程序,可以让你 为您的站点创建应用程序编程接口(API)。
它有几个独特的功能:
- 联系Django的内部机制。
- 支持开箱即用的OAuth(以及基本/摘要或自定义身份验证。)
- 不需要绑定模型,允许任意资源。
- 讲JSON,YAML,Python Pickle& XML(和HATEOAS。) 使用Python中方便的可重用库
- 尊重并鼓励正确使用HTTP(状态代码,......)
- 内置(可选)表单验证(通过Django),限制等。
- 支持流式传输,内存占用少。
- 坚持下去。