📌 개념 정리
3-11. 직렬화(Serialization) & 역직렬화(Deserialization)
1️⃣ 직렬화 (Serialization)
직렬화는 복잡한 데이터 구조(예: Python 객체)를 JSON과 같은 포맷으로 변환하는 과정입니다. 이 변환은 주로 API 응답으로 데이터를 전송하거나, 파일로 저장할 때 사용됩니다.
User 모델의 직렬화 예시
- 모델 인스턴스: Python에서 User 객체가 있다고 가정합니다.
user_instance = User(id=1, username='JohnDoe')
- 직렬화 과정: 이 객체를 JSON 포맷으로 변환합니다. 이를 위해 Marshmallow의 스키마를 사용할 수 있습니다.
class UserSchema(Schema):
id = fields.Int(dump_only=True)
username = fields.Str()
- 결과: 직렬화된 JSON 데이터는 다음과 같습니다.
{
"id": 1,
"username": "JohnDoe"
}
2️⃣ 역직렬화 (Deserialization)
역직렬화는 JSON과 같은 포맷의 데이터를 복잡한 데이터 구조(예: Python 객체)로 변환하는 과정입니다. 클라이언트에서 받은 데이터를 서버의 내부 데이터 모델로 변환할 때 사용됩니다.
User 모델의 역직렬화 예시
- JSON 데이터: 클라이언트로부터 다음과 같은 JSON 데이터를 받았다고 가정합니다.
{
"username": "JaneDoe"
}
- 역직렬화 과정: 이 JSON 데이터를 User 모델의 인스턴스로 변환합니다.
user_data = {"username": "JaneDoe"}
user_schema = UserSchema()
user_instance = user_schema.load(user_data)
- 결과: 역직렬화된 User 인스턴스는 다음과 같습니다.
User(username='JaneDoe')
3️⃣ 사용 케이스
- API 응답에서 직렬화 사용: 서버가 데이터베이스에서 User 인스턴스를 조회한 후, 이를 JSON 형식으로 클라이언트에게 전송할 때 사용합니다.
- 클라이언트 요청에서 역직렬화 사용: 클라이언트로부터 JSON 형식의 데이터를 받아, 이를 User 모델 인스턴스로 변환하여 데이터베이스에 저장할 때 사용합니다.
✅ 직렬화와 역직렬화의 중요성
직렬화와 역직렬화는 데이터를 안전하고 효율적으로 전송하고, API 요청 및 응답을 처리하는 데 필수적인 과정입니다. 이 과정을 통해 복잡한 객체 구조를 쉽게 관리하고, 데이터의 유효성을 검증할 수 있습니다.
✅ 마무리 요약 및 복습 포인트
- 직렬화(Serialization): Python 객체를 JSON 형식으로 변환하는 과정입니다.
- 역직렬화(Deserialization): JSON 데이터를 Python 객체로 변환하는 과정입니다.
- API 개발 과정에서 직렬화와 역직렬화는 데이터를 안전하고 효율적으로 주고받을 수 있게 도와줍니다.
'Flask' 카테고리의 다른 글
Chapter 4-1 Flask-Migrate란? (0) | 2025.04.22 |
---|---|
Chapter 3-12 Flask 개념 정리 (0) | 2025.04.21 |
Chapter 3-10 Schema & Model 차이 (0) | 2025.04.21 |
Chapter 3-9 Flask-SQLAlchemy CRUD 테스트 방법 (0) | 2025.04.21 |
Chapter 3-8 DB 객체 모델 정의 방법 2가지 (0) | 2025.04.21 |