현재 Django REST Framework로 백엔드 API를 개발하고 있는 중인대, Vi

 
Jae Lee

현재 Django REST Framework로 백엔드 API를 개발하고 있는 중인대,
Viewset endpoint만 web-browsable API에 등록이 되고 APIView 같은 경우는 등록이 안되네요.

이유가 Viewset만 DRF의 router를 통해 urlpattern에 등록되서인것같기도 한대 혹시 이에 확실한 답변을 아는 분 계신가요? (현재 DRF documentation 보면 APIView도 등록이 되는걸로 나와있긴 합니다)

SO에 질문 올려봤는대도 잠잠해서 이곳에 올려봅니다!

  • Sebum Lee

    저 코드만 봐선 모르겠는데 전 APIView만 쓰는데 잘 되거든요. 혹시 뷰에 renderer_classes 를 JSONRenderer 만 지정해주셨나요?

    Sebum Lee

    또하나 확인하셔야 할건 세팅에서 기본 렌더러를 뭐로 해주셨는지요?
    REST_FRAMEWORK = { ‘DEFAULT_RENDERER_CLASSES’: ( ‘rest_framework.renderers.BrowsableAPIRenderer’, ) }

    Sebum Lee

    자세한 링크는 여기에…
    http://www.django-rest-framework.org/api-guide/renderers/

    Jae Lee

    제가 알기론 DEFAULT_RENDERER_CLASSES 기본값에 BrowsableAPIRenderer가 포함되어 있는 걸로 알고 있습니다. 혹시 몰라서 추가해봤는대 별 다른 차이점은 없네요.

    Jae Lee

    아 제가 설명을 제대로 못한것 같네요. 제 질문은 그 해당 APIView endpoint URL에 접속했을때 나오는 정보가 아니라, API Root에 들어갔을때 혹시 Viewset endpoint와 더불어 APIView endpoint도 같이 보여지도록 설정이 가능한지 묻고 싶습니다. (사진에서는 Viewset endpoint인 tokens만 보여지네요.)

    Sebum Lee

    안해봐서 모르지만 예상을 한번 해보자면, 스택오버에 올리신 코드를 보시면 tokens만 라우터에 들어가있습니다. 다른것들도 router에 한번 넣어보세요.

    Sebum Lee

    제가 예상한거 안될거 같네요. router는 viewset만 된답니다.

    Sebum Lee

    암튼 지금 저 view에 tokens밖에 안보이시는 이유는 이렇게 하셨기 때문입니다. url(r’^api/’, include(router.urls)),
    즉 router에는 tokens밖에 안하셨기때문입니다.

    Jae Lee

    Sebum Lee 예, 처음 예상이 그랬었어요. APIView도 등록이 가능하게 변형시킨 router 3rd-party module을 찾긴했지만 과연 이거하나 위해서 외부 의존성을 높여야하나 고민중입니다. 작은 스타트업이다 보니까 따른 API 문서 작성 없이 빠르게 프론트엔드/앱 개발자들하고 정보가 공유되는 방안을 찾고 싶은대 말이죠. 어쨌거나 답변해 주셔서 감사합니다!

    Sebum Lee

    별말씀을요. 저도 덕분에 배웠습니다. ^^

    Sebum Lee

    이게 혹시 원하시는거 아닐까요?
    http://www.django-rest-framework.org/tutorial/5-relationships-and-hyperlinked-apis/

    박영록

    browsable api는 막상 써보려고 하면 이것저것 불편한 게 많죠. django-rest-swagger 추천합니다.

Advertisements