JSON (JavaScript Object Notation)은 데이터를 자바스크립트 객체 타입으로 전달될 수 있게끔하는 문자열 데이터 표현식이다.
JSON은 그렇다면 JavaScript일까? 아니다. 그냥 JSON을 보내면 JavaScript가 타입을 인지 못하는 경우가 발생할 수 있습니다. 따라서 JSON을 가장 일반적인 데이터 타입인 문자열 (string)으로 사용한다.
- Serialization: Python 객체 -> JSON 데이터
- Deserialization: JSON 포맷 데이터 -> Python 객체
json.loads() method can be used to parse a valid JSON string and convert it into a Python Dictionary.
json.loads()는 JSON string을 파이썬의 dictionary로 파싱(parsing)해준다. parameter로는 bytes 타입을 받는다.
그렇다면 data와 request.body의 타입은 무엇일까?
내가 가지고 있는 views.py에서 어떤 식으로 출력이 되는지 알아보았다.
다음과 같이 request를 보냈다. 참고로 주소는 가짜다 ^^ 내 주소 아님.
그리고 views.py에서 data=json.loads(request.body)
를 이용하여 데이터를 받았다.
차례대로 request.body
, type(request.body)
, data
, type(data)
를 프린트해보았다.
- request.body 는 class 'bytes' 이다!
- JSON으로 담은 데이터는 class 'dict'이다!
그렇다면 왜 request.body를 쓰는 것일까? request.data 는 안될까?
request.data in DRF vs request.body in Django
request.body is bytes, which is always available, thus there is no limit in usage.
request.data is a "property" method and can raise an exception, but it gives you parsed data, which are more convenient
request.body 는 class byte이기 때문에 쓰임새에 제약이 없지만, request.data 는 Exception error를 줄 수 있다고 한다.