2011-01-07 2 views
3

장고 앱을 만들었지 만 이는 다른 프레임 워크에도 적용됩니다. Tastypie 또는 Django-Piston에서 제공 한 것과 같은 적절한 RESTful API를 사용해야한다면 서버 (fetch(), create(), destroy() 등)를 호출하는 Backbone.js 메서드에서? 장고보기에서 JSON을 구성하는 것이 쉽고 유연하며, Backbone.js에서 사용할 수있는 일부 URL에 매핑됩니다. 그렇다면 Tastypie/Django-Piston 기능을 최대한 활용하지는 않을 것입니다.AJAX 기능을위한 적절한 RESTful API를 사용하는 대신 수동으로 JSON을 구성하고 수동으로 GET, POST를 처리하는 것은 해킹일까요?

아직 내 앱을위한 본격적인 RESTful API를 만들 준비가되지 않았습니다. Backbone.js가 지원하는 AJAXy 기능을 사용하고 싶습니다.

장단점/단점?

답변

2

나는 개인적으로 내 자신의 ajax 뷰와 json 객체를 정의하는 것을 선호한다. 이미 사용 된 api를 사용하면 많이 사용되거나 그렇지 않을 수 있습니다. 일부는 정확하게 일부 요구 사항을 충족시키지 못합니다. 일부는 중복되는 기능을 가지고있을 수 있습니다 (그리고 현재 사용되고 있지 않은 코드가 마음에 들지 않습니다).

아약스 기능을 작성하는 것도 그다지 어렵지 않습니다. 귀하의 도움을 위해 내장 된 serializers/request.is_ajax 기능이 있습니다.
django/jquery를 사용하여 아약스를 구현 한 몇 가지 예 :

+0

cool, 나는 request.is_ajax()에 대해 몰랐다. ... thanks – kliao

3

REST는 JSON과 동일하지 않습니다. 만약 text/html에 당신의 표현이 필요하다면 나에게 그걸 제공하거나 아니면 415를 던져 줄 수 있어야합니다.

더 나은 해결책은 장고가 제공하는 미들웨어 기능을 사용하는 것입니다. 귀하의 의견이 무엇이든간에 응답을 위해 Djangos 미들웨어 기능을 사용하여 JSON, XML 등으로 인코딩하십시오.

+0

나는 미들웨어에서 필요한 변형을 추가하는 아이디어를 좋아한다. 그것은 모든 것이 인코딩 될 수있는 단일 번역 레이어를 제공합니다 ... 나는 이것을 시도하고 그것이 어떻게 작동하는지 보게 될 것이라고 생각합니다. 감사! – kliao

+1

@kliao 아주 간단합니다. 'request.META [ "HTTP_ACCEPT"]. split (",") [0]'을 통해 쉽게 내용 유형을 얻을 수 있습니다. 지원되는 유형의 소스를 어딘가에 유지하고, 지원되는지 if-condition 검사를 사용하여 필요한 유형을 수행하십시오 조작. – Anders

+0

Backbone.sync 함수를 수정하여 필요에 따라 JSON을 처리 할 수 ​​있습니다. 현재 JSON.stringify를 수행하지만 XML, urlencoded 또는 애플리케이션이 가장 잘 작동하는 것을 구현할 수 있습니다. – Julien

관련 문제