2013-08-01 2 views
1

단순한 비구유의 API를 작성해야하고 django-tastypie을 사용하여이를 수행하려는 경우 어떻게해야할까요?비 RESTful API에 django-tastypie 사용

Tastypie는 데이터 모델에 밀접하게 연결된 Resource만을 제공합니다.

API에 대해 tastypie의 다른 유틸리티 (인증, 직렬화 등)를 사용하는 방법이 있지만 "간단한"API에 사용하는 방법이 있습니까? 물론 이것은 간단한보기로 작성 될 수 있지만, tastypie가 제공하는 다른 것들을 놓치게됩니다.

간단한 예는 문자열을 받고 반대로 변환하는 API입니다.

+1

'ModelResource'를 사용할 필요가 없으며 http://django-tastypie.readthedocs.org/en/latest/resources.html#why-resource-vs-를 상속 할 수있는'Resource' 클래스가 있습니다. modelresource –

+0

@HeddevanderHeide'ModelResource'보다는 오히려'Resource'를 언급 한 적이 없으며, 만약 당신이 살펴 본다면,'Resource'조차도 제가 관심이없는 일종의 데이터 모델을 가정합니다. 그래서 이것은 정말로 도움이되지 않습니다. –

답변

1

이것은 prepend_urls의 목적입니다. 기존 방법에 사용자 정의 끝점을 추가 할 수 있습니다. 기본적으로 일반보기처럼 작동하지만 Resource에서 필요한 모든 함수를 호출 할 수 있습니다. -또는 기존 Tastypie 함수에 피기 백을 반환하면 풍부한 객체를 반환 할 수 있습니다. 내가 경우,

def prepend_urls(self): 
    return [ 
     #... 
     url(r"^(?P<resource_name>%s)/is_authenticated?$" % (self._meta.resource_name), self.wrap_view('is_authenticated')), 
     #... 
    ] 
# ...other methods in your Resource... 
def is_authenticated(self, request, **kwargs): 
    if self._meta.authentication.is_authenticated(request): 
     return HttpResponse("1") 
    else: 
     return HttpResponse("0") 

을 또는 : 나는 User 자원이 있고 사용자가 현재 1 또는 0을 반환하여 인증 여부를 결정하기 위해 엔드 포인트를 제공하기를 원한다면

예를 들어, 나는이 작업을 수행 할 것 실제로 인증 된 사용자의 실제 사용자 리소스를 반환하기 위해 /user/?id=[authenticated user's ID]에 대한 호출을 효과적으로 시뮬레이트하면 return HttpResponse("1")return self.get_detail(request, id=request.user.id)으로 바꿀 수있었습니다 (예 : /user/?id=[authenticated user's ID]).

관련 문제