웹프로그래밍/DRF
[Django] format 과 Renderer
ssung.k
2019. 12. 29. 17:52
restframework.response.Response 에서는 2가지 타입의 응답을 할 수 있습니다.
-
json
다른 일반적인 경우 json 타입으로 응답하게 됩니다.
{ "post":"http://127.0.0.1:8000/post/" }
-
api
DRF은 브라우저를 통해 접근이 가능하며 이 경우 api 타입으로 응답하게 됩니다. 이 api 타입이 html로서 우리가 브라우저에서 보게 되는 아래의 이미지입니다.
출력 포맷을 결정하는 방법은 3가지가 있습니다.
각 방식에 대해 json 타입의 요청과 api 타입의 요청하는 방법은 다음과 같습니다.
-
Accept 헤더
localhost:8000/ Accept:application/json localhost:8000/ Accept:text/html
-
GET 인자 format
localhost:8000/?format=json http://localhost:8000/?format=api
-
URL 끝에 '.{포맷방식}'
http://localhost:8000/.json http://localhost:8000/.api
Renderer
DRF 은 두 가지 Renderer를 디폴트로 제공하고 있습니다. 이는 아래와 같습니다.
-
JsonRenderer
json.dumps
를 통한 json 직렬화- format 이 json 일 경우
-
BrowsableAPIRenderer
- html 을 통한 랜더링
- format 이 api 일 경우
https://www.django-rest-framework.org/api-guide/renderers/
Renderers - Django REST framework
www.django-rest-framework.org
이 외의 추가적인 Renderer 들은 위 공식문서를 통해서 확인할 수 있습니다.
Renderer를 바꾸기 위해서는, 혹은 새로운 Renderer를 추가하기 위해서는 settings 에서 이를 추가해주어야 합니다.
기본적으로 제공되는 두 개의 Renderer를 포함하여 추가적인 Renderer 를 기재하면 됩니다.
# settings.py
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': [
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
# 추가적인 renderer
]
}