2013-06-02 4 views
2

저는 REST 웹 서비스를 구축 중이며 리소스를 구조화하는 방법에 대한 최선의 방법 (성능 현명한, 우아함 및 베스트 프랙티스)을 원합니다.Django에서 중첩 된 RESTful 리소스에 대한 POST

/api/v1/question/{q_id} #to access the question resource 

/api/v1/question/{q_id}/answers/{a_id} # to access the answers of a question. 

는 이제이 GET 방식과 완전히 괜찮아, 어떤 경우 : 내가 ManyToMany 관계를 가진 두 개의 모델을 가지고, 그래서 다음과 같은 내 자원의 엔드 포인트를 설계 할 수있다 (와 같은 here 설명 새로운 답변으로 새로운 질문을 만들고 싶습니다. 첫 번째 URL에 POST 요청을 보내야합니다. 두 번째 메시지 POST는 왕복에도 불구하고 여전히 일을 처리하는 깨끗한 방법으로 간주됩니까?

P.S 나는 장고를 사용하고 있으며 클라이언트 측에서 BackboneJS를 사용하여 django-simple-rest, django-rest-frameworkdjango-tastypie 사이에 여전히 주저하고 있습니다.

+0

대체 무엇입니까? – dm03514

+0

대안은 무엇입니까? –

답변

1

REST에 대한 리소스입니다. 가장 좋은 방법은 없습니다. 나는 오랫동안 내게 큰 API를 실행했다.

단순성을 위해서

난 그냥 두 개의 자원을 만들 것입니다 :

  • 질문 : /api/v1/question/
  • 답변 : /api/v1/answer/

이유는 무엇입니까? 왜냐하면 그것은 간단합니다. 이제는 공연 및 HATEOAS 호환이 가능하도록 여러 가지 대안을 사용할 수 있습니다. 당신이 질문을받을 때 예를 들어, 당신은 또한 답변의 목록을 얻을 수 :

GET /api/v1/question/{q_id}/ 
{ 
    'question': 'Should I use REST or SOAP?' 
    'created_date': '...', 
    'user_id': '99', 
    'answers': [ 
     { 
      'answer': 'REST, of course!', 
      'user_id': 23, 
      'resource_uri': '/api/v1/answers/818/' 
     }, 
     { 
      'answer': 'Are you nuts? Use SOAP!', 
      'user_id': 12, 
      'resource_uri': '/api/v1/answers/915/' 
     } 
    ] 
} 

당신은 POST와 유사한 방식을 사용할 수 있습니다.

Django Tastypie를 사용하는 경우이 간단한 작업을 수행하기 위해 필드를 사용할 수 있습니다. 50 loc로 작업 할 수 있습니다.

중요 사항 : 답변과 질문 사이에 ManyToMany이 있습니까?

+0

필드가있는 Tastypie의 POST에서 어떻게 작동합니까? 그리고 예, ManyToMany 필드는 모든 대답이 많은 질문에도 속할 수 있습니다. 그것은 의미가 있습니까? –

+0

의미가 있습니까? 그렇지 않아. 그러나 그것은 중요하지 않습니다. 그것은 당신의 소프트웨어이고 당신은 저보다 나은 요구 사항을 알고 있습니다. – santiagobasulto

+0

Tastypie : 여러 질문을 동시에 작성하려고한다고 가정합니다. 이 경우 hydrate 메서드를 사용할 수 있습니다. 그것은 완전히 실행 가능합니다. – santiagobasulto

관련 문제