TIL - Serializer가 뭔데요?

Jisu Park·2022년 12월 13일
0

오늘의개발일지-TIL

목록 보기
12/12
post-thumbnail

공부한 배경

간밤에 있었던 이슈에 대해 동료 개발자분과 이야기를 하던 중 그 분께서 이건 아무래도 serializer 작업을 안 해줘서 그런 것 같다는 이야기를 했다.
serializer가 뭔데요? 눈을 뻐끔거리며 물어보고선 분명 설명도 들었지만, 그게 기억에 남을리가.. 그래서 정리해본다.

문제 상황

  1. 한 개발자가 프론트엔드 사이드에서 백엔드로 보내는 api에 특정 field 하나를 추가했다.
  2. 해당 field는 이미 백엔드에서 가지고 있던 field이기 때문에 다른 조치를 취하지는 않았다.
  3. 하지만 알고보니, 원래 해당 field는 text만 받아들이기 때문에 다른 타입이 들어오는 경우, 에러를 내보낸다.
  4. 프론트엔드 사이드에서 추가한 해당 field에서는 객체를 보내고 있다.
  5. 결국, 여태까지는 4번의 방식으로 사용하지 않았기 때문에 Serializer 작업이 빠져 있었고 이슈가 발생했다!

Serializer란?

  • 쉽게 설명하면 frontend로 데이터를 보내기 위해 장고 내부의 복잡한 데이터들을 json/xml 등의 형태로 데이터를 변환해준다고 생각을 하면 된다.
  • 이는 간단하게 파이썬 데이터를 JSON 타입의 데이터로 변환해준다 정도로 생각하시면 됩니다.
  • 저는 그냥 Django 모델을 JSON으로 변환하기 위한 모양 틀 정도로 이해하고 있고 그게 제일 깔끔한 것 같습니다!

몇몇 블로그들에서 정리해놓으신 정의를 가져와봤다. 아주 정말 간단하게 말하면,

Serializer : JSON 타입 데이터 변환

이 되는 것 같다. 그러면 왜 문제가 발생했는지도 이제 이해할 수 있다.
여기까지만 하면 조금 아쉬우니까 덧붙여 보자면,

Django의 모델

Django에는 모델이라는 개념이 있다. 우리가 데이터베이스를 사용하게 되면, 데이터베이스 각 테이블에 들어갈 field의 데이터 타입 등을 정의해야 한다. 또한 각각의 테이블들이 서로 어떻게 엮여있는지(foreign-key), 누가 unique-key인지 등등도 명시해야 한다.
내가 이해한 바로는 모델이 바로 그 역할을 한다. 그러면 모델에는 당연히 아주 당연한 데이터 타입이 들어갈 것이다. 스트링, 객체, 숫자, 불리언 등등등.
이것들을 그냥 가져다 쓸 수 없으니 Serializer를 통해 JSON의 형태로 통일화하는 것 같다.

근데 왜 통일화가 필요할까?

찾았다. 이유를. 결국 REST API를 사용하여 데이터를 주고받기 위함이었던 것이다!

마무리

아주 얕게, 겉핥기만 한 것 같지만, 그래도 그냥 넘어갈까 하다가 적어본다.
다른 블로그들의 많은 정보들을 짜깁기해서 더 깊게 공부할까도 했지만, 지금 당장 와닿는 정보가 아니라서 그냥 넘겼다.
차후 언젠가 백엔드를 시작하게 된다면, 적어도 이 정보는 나에게 유용하길 바라면서!

Reference

profile
언젠간 데이터 분석을 하고 싶은 초짜 프론트엔드 개발자입니다🙃

0개의 댓글