1. 모든 API를 json으로 리턴한다
가장 쉽고 빠른 방법.
Settings.py 에 세팅하면 자동으로 json으로 리턴합니다.
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
)
}
단 위의 방법은 모든 API에 대하여 json 형식으로 대응됩니다. 즉 rest_freamework에서 지원하는 템플릿을 사용할 수 없습니다.
2. depoly 따라 설정하고 한다.
예를 들어 개발 및 test 일 경우엔 setting_develop.py로 만들어서 REST_FRAMEWORK의 옵션을 설정하지 않는 방식입니다.
이렇게 되면 depoly에 따라 구분되지만, API 별로 구분할수 없습니다.
3. 각 API별로 설정하고 싶다
view에서 해당 CBV에 설정하고 싶다면 view에 renderer_classes로 설정하면 해당 API는 JSON형식으로 리턴됩니다.
from rest_framework.renderers import JSONRenderer
class MoreUsersView(viewsets.ViewSet):
renderer_classes = (JSONRenderer,)
위의 셋팅을 하지 않으면 resfremework 템플릿으로 반환 값을 변경되어 템플릿으로 옵니다.
아래는 일반 Get요청 했을시의 swagger 템플릿으로 오는 화면입니다. content-type도 text/html로 반환됩니다.
view에서의 RETURN을 Response() -> JsonResponse()로 변경하면 가능하지만, resfremework 템플릿을 사용할 수 없습니다.
무조건 Json으로 반환되기 때문입니다. 리턴 함수를 Response()로 한 다음 API와 depoly에 맞게 조정하는 것을 추천합니다.
- 혹시 swagger에서 특정 url을 숨기고 싶다면 아래 키워드를 추가 해보자. (django버전에 따라서 동작 안할수 있습니다. )
exclude_from_schema = True
'web > Django_rest_framework' 카테고리의 다른 글
[Django rest framework] 튜토리얼을 시작하며. (0) | 2020.06.02 |
---|---|
django Rest framework APIView / Mixins / Viewset (0) | 2020.03.29 |
django에서 swagger로 한다면 drf_yasg 는 왠만하면.... (0) | 2019.05.20 |
django REST_FRAMEWORK login (0) | 2019.01.11 |
9. href (0) | 2016.07.30 |