간밤에 있었던 이슈에 대해 동료 개발자분과 이야기를 하던 중 그 분께서 이건 아무래도 serializer 작업을 안 해줘서 그런 것 같다는 이야기를 했다.
serializer가 뭔데요? 눈을 뻐끔거리며 물어보고선 분명 설명도 들었지만, 그게 기억에 남을리가.. 그래서 정리해본다.
- 쉽게 설명하면 frontend로 데이터를 보내기 위해 장고 내부의 복잡한 데이터들을 json/xml 등의 형태로 데이터를 변환해준다고 생각을 하면 된다.
- 이는 간단하게 파이썬 데이터를 JSON 타입의 데이터로 변환해준다 정도로 생각하시면 됩니다.
- 저는 그냥 Django 모델을 JSON으로 변환하기 위한 모양 틀 정도로 이해하고 있고 그게 제일 깔끔한 것 같습니다!
몇몇 블로그들에서 정리해놓으신 정의를 가져와봤다. 아주 정말 간단하게 말하면,
Serializer : JSON 타입 데이터 변환
이 되는 것 같다. 그러면 왜 문제가 발생했는지도 이제 이해할 수 있다.
여기까지만 하면 조금 아쉬우니까 덧붙여 보자면,
Django에는 모델이라는 개념이 있다. 우리가 데이터베이스를 사용하게 되면, 데이터베이스 각 테이블에 들어갈 field의 데이터 타입 등을 정의해야 한다. 또한 각각의 테이블들이 서로 어떻게 엮여있는지(foreign-key), 누가 unique-key인지 등등도 명시해야 한다.
내가 이해한 바로는 모델이 바로 그 역할을 한다. 그러면 모델에는 당연히 아주 당연한 데이터 타입이 들어갈 것이다. 스트링, 객체, 숫자, 불리언 등등등.
이것들을 그냥 가져다 쓸 수 없으니 Serializer를 통해 JSON의 형태로 통일화하는 것 같다.
근데 왜 통일화가 필요할까?
찾았다. 이유를. 결국 REST API를 사용하여 데이터를 주고받기 위함이었던 것이다!
아주 얕게, 겉핥기만 한 것 같지만, 그래도 그냥 넘어갈까 하다가 적어본다.
다른 블로그들의 많은 정보들을 짜깁기해서 더 깊게 공부할까도 했지만, 지금 당장 와닿는 정보가 아니라서 그냥 넘겼다.
차후 언젠가 백엔드를 시작하게 된다면, 적어도 이 정보는 나에게 유용하길 바라면서!